一、去重复名
_lst1 = ["刘一", "陈二", "张三", "李四", "王五", "赵六", "孙七", "周八", "吴九", "郑十"]
_lst2 = ["陈甲", "李乙", "陈二", "张丙", "赵六", "刘一", "黄丁", "何卯"]
_lst3 = _lst1 + _lst2
_lst4 = []
for i in _lst3:
if i not in _lst4:
_lst4.append(i)
print(f"【普通去重】共有 {len(_lst4)} 人安排到一起坐,分别是:", _lst4)
_lst3 = list(set(_lst1 + _lst2))
print(f"【集合去重】共有 {len(_lst3)} 人安排到一起坐,分别是:", _lst3)
_lst3 = list(dict.fromkeys(_lst1 + _lst2))
print(f"【字典去重】共有 {len(_lst3)} 人安排到一起坐,分别是:", _lst3)
_lst3 = {i for i in (_lst1 + _lst2)}
print(f"【集合推导式去重】共有 {len(_lst3)} 人安排到一起坐,分别是:", list(_lst3))
_lst3 = {i: 0 for i in (_lst1 + _lst2)}
print(f"【字典推导式去重】共有 {len(_lst3)} 人安排到一起坐,分别是:", list(_lst3.keys()))
def remove_duplicate(_lst, index):
if index < 0:
return _lst
if _lst[index] in _lst[:index]:
_lst.pop(index)
return remove_duplicate(_lst, index - 1)
_lst3 = _lst1 + _lst2
_lst4 = remove_duplicate(_lst3, len(_lst3) - 1)
print(f"【递归去重】共有 {len(_lst4)} 人安排到一起坐,分别是:", _lst4)
二、歌手得分计算
_list = [9.8, 9.5, 9.2, 9.3, 8.9, 9.5, 9.6, 9.3, 9.4, 9.6]
_list.remove(max(_list))
_list.remove(min(_list))
print("【普通方法】最终得分为:%.2f" % (sum(_list) / len(_list)))
_list.sort()
_list = _list[1:-1]
print("【排序后去除最高分和最低分】最终得分为:%.2f" % (sum(_list) / len(_list)))
def remove_max_min(_lst, index, max_index, min_index):
if index < 0:
_lst.pop(max_index)
_lst.pop(min_index)
return _lst
if _lst[index] > _lst[max_index]:
max_index = index
if _lst[index] < _lst[min_index]:
min_index = index
return remove_max_min(_lst, index - 1, max_index, min_index)
_list = remove_max_min(_list, len(_list) - 1, 0, 0)
print("【递归去除最高分和最低分】最终得分为:%.2f" % (sum(_list) / len(_list)))
三、统计重复次数
import random
list1 = [random.randint(1, 10) for i in range(20)]
print("原来的列表是:", list1)
dict1 = {}
for i in list1:
dict1[i] = dict1.get(i, 0) + 1
print(dict1)
list2 = list(dict1.items())
list2.sort(key=lambda x: x[1], reverse=True)
print(list2)
stack = [list2[0]]
for i in range(1, len(list2)):
if list2[i][1] == stack[i - 1][1]:
stack.append(list2[i])
else:
break
stack = [str(i[0]) for i in stack]
print("出现次数最多的元素是:" + ",".join(stack))
_set = set(list1)
max_value = []
max_count = 0
for i in _set:
if list1.count(i) > max_count:
max_value = [str(i)]
max_count = list1.count(i)
elif list1.count(i) == max_count:
max_value.append(str(i))
print("出现次数最多的元素是:" + ",".join(max_value))