1.方法一:set去重
lst1 = [1,4,4,2,3,4,5,6,1]
print(lst1) # [1, 4, 4, 2, 3, 4, 5, 6, 1]
print(set(lst1)) # {1, 2, 3, 4, 5, 6}
lst2 = list(set(lst1))
print(lst2) # [1, 2, 3, 4, 5, 6]
可以看到使用set可以方便的去重列表,不过该方法有个弊端,会打乱元素的顺序。
那有没办法保持原列表的顺序呢?
其实每个列表中的元素都有自己的index,因此,我们可以借助sort来指定sort的key为index,保持去重后列表的原序
lst1 = [1,4,4,2,3,4,5,6,1]
print(lst1) # [1, 4, 4, 2, 3, 4, 5, 6, 1]
print(set(lst1)) # {1, 2, 3, 4, 5, 6}
lst2 = list(set(lst1))
lst2.sort(key=lst1.index)
print(lst2) # [1, 4, 2, 3, 5, 6]
2. 方法二:将元素放到新列表
新建一个空列表,然后将不重复的元素逐一放到新列表中
lst1 = [1,4,4,2,3,4,5,6,1]
lst2 = []
for i in lst1:
if i not in lst2:
lst2.append(i)
print(lst2) # [1, 4, 2, 3, 5, 6]
3. 方法三:reduce函数
from functools import reduce
lst1 = [1,4,4,2,3,4,5,6,1]
func = lambda x,y:x if y in x else x + [y]
print(reduce(func,[[],]+lst1)) # [1, 4, 2, 3, 5, 6]
4、其它方法可参考博客
https://www.cnblogs.com/xxpythonxx/p/12181224.html