前言
Python中对List中的元素进行去重操作
程序
- 用
set
方法
# 去重后与原列表长度比较
lst = [1, 3, 5, 3, 4, 4, 2, 9, 6, 7]
set_lst = set(lst)
# set会生成一个元素无序且不重复的可迭代对象,也就是我们常说的去重
if len(set_lst) == len(lst):
print('列表里的元素互不重复!')
else:
print('列表里有重复的元素!')
- 用
append
的方式
# 把原列表中的元素添加到一个新列表,确保新列表里不存在重复的元素,然后比较两个列表
lst = [1, 3, 5, 8, 9, 9, 0, 0, 3, 3]
new_list = []
for i in lst:
if i not in new_list:
new_list.append(i)
# 这样能确保新的列表里包含原列表里所有种类的元素,且元素互不重复
if len(new_list) == len(lst):
print('原列表里的元素互不重复!')
else:
print('原列表里有重复的元素!')
- 用
fromkeys
的方法
# 创建一个字典,因为字典的键会自动去重,所以可以比较字典和原列表的长度,跟方法一很像
lst = [1, 3, 5, 8, 9, 9, 0, 0]
dic = {}.fromkeys(lst)
# 这种方法建立字典,会把列表里的元素当做字典的键,由于字典的键不能重复,所以会自动去重
if len(dic) == len(lst):
print('列表里的元素互不重复!')
else:
print('列表里有重复的元素!')
- 对List 中元素出现的次数做统计
from collections import Counter # 引入Counter
a = [1, 2, 3, 3, 4, 4]
b = dict(Counter(a))
print(b)
print([key for key, value in b.items() if value > 1]) # 只展示重复元素
print({key: value for key, value in b.items() if value > 1}) # 展现重复元素和重复次数
结果展示
{1: 1, 2: 1, 3: 2, 4: 2}
[3, 4]
{3: 2, 4: 2}
- set去重顺序不会变
# 可以通过列表中索引(index)的方法保证去重后的顺序不变
li = [1, 2, 3, 3, 4, 4]
lis = list(set(li))
print(li)
print(lis)
lis.sort(key=li.index)
print(lis)
结果展示
[1, 2, 3, 3, 4, 4]
[1, 2, 3, 4]
[1, 2, 3, 4]
总结
写的可能有点粗造了!!!