列表去重的几种操作


在日常工作中对列表进行快速对去重操作,主要有以下几种方法,希望可以帮到大家。


1.python中 set 方法去重,但是会改变原有列表到顺序

l1 = [1,4,4,2,3,4,5,6,1]
l2 = list(set(l1))
print(l2)    # [1, 2, 3, 4, 5, 6]

2.通过列表中索引(index)的方法保证去重后的顺序不变

l1 = [1,4,4,2,3,4,5,6,1]
l2 = list(set(l1))
l2.sort(key=l1.index)
print(l2)      # [1, 4, 2, 3, 5, 6]
itertools.groupby

3.使用import itertools 函数

l1 = [1,4,4,2,3,4,5,6,1]
l1.sort()
l = []
it = itertools.groupby(l1)
for k,g in it:
    l.append(k)
print(l)      # [1, 2, 3, 4, 5, 6]

4.python 字典 fromkeys() 的方法

l1 = [1,4,4,2,3,4,5,6,1]
t = list({
    
    }.fromkeys(l1).keys())

5.通过删除索引

l1 = [1,4,4,2,3,4,5,6,1]
t = l1[:]
for i in l1:
    while t.count(i) >1:
          del t[t.index(i)]
# 解决顺序问题
t.sort(key=l1.index)
print(t)    # [1, 4, 2, 3, 5, 6]

但是你如果想保持原有顺序不变,可以尝试使用下下面的办法:

1.循环遍历,建立新列表 []

l1 = [1,4,4,2,3,4,5,6,1]
new_l1 = []
for i in l1:
    if i not in new_l1:
        new_l1.append(i)
print(new_l1)    # [1, 4, 2, 3, 5, 6]

2.reduce方法

from functools import reduce
l1 = [1,4,4,2,3,4,5,6,1]
func = lambda x,y:x if y in x else x + [y]
print(reduce(func,[[],]+l1))   # [1, 4, 2, 3, 5, 6]

希望可以帮助到大家


猜你喜欢

转载自blog.csdn.net/weixin_45906701/article/details/115179276