Python3——列表去重的方法

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

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页