如何从python中的列表中删除第二个副本

时间:2018-04-20 06:11:35

标签: python duplicates

列表= [1,2,3,4,1,2,3,1,2]

这里我只需要删除第二个重复项(一式三份)并忽略第一个重复项。

最终结果应如下所示,

Out_list = [1,2,3,4,1,2,3]

2 个答案:

答案 0 :(得分:7)

使用Counter:

进行pythonic方式
from collections import Counter
l = [1,2,3,4,1,2,3,1,2]
c = Counter()
new_l = [ i for i in l if c.update([i]) or c[i]<3 ] #new_l=[1,2,3,4,1,2,3]

一个简短的解释:Counter的方法update使用迭代器并将此迭代器的元素递增一,并返回None,其作为布尔值转换为False。因此c.update([i]) or c[i]<3相当于c[i]<3

答案 1 :(得分:0)

尝试这样的事情,

In [13]: lst = [1,2,3,4,1,2,3,1,2]

In [14]: while True:
    ...:     check_list = [i for i in set(lst) if lst.count(i) > 2]
    ...:     if check_list:
    ...:         for item in check_list:
    ...:             lst.reverse()
    ...:             lst.remove(item)
    ...:             lst.reverse()
    ...:     else:
    ...:         break
    ...:     

In [15]: lst
Out[15]: [1, 2, 3, 4, 1, 2, 3]