如何删除python列表中的重复项

时间:2013-10-18 00:43:52

标签: python list python-3.x

我正在编写一个删除列表中重复项的程序,而我却无法弄清楚如何找到重复项的位置?

#list
lis=[1,2,45,223,1,23,546,488,223,5688]
print(lis,"Im going to remove the duplicate numbers.")
#check for duplicates

#removes duplicates
#print list

4 个答案:

答案 0 :(得分:7)

set(my_list)返回my_list的唯一值。您可以将其转换回list(set(my_list))等列表。

保留订单的一种方法是使用collections.OrderedDict

list(OrderedDict.fromkeys(my_list))

答案 1 :(得分:4)

此列表理解将保留顺序并删除在初始项目后发生的所有重复:

>>> lis=[1,2,45,223,1,23,546,488,223,5688]
>>> [el for i, el in enumerate(lis) if el not in lis[:i]]
[1, 2, 45, 223, 23, 546, 488, 5688]

这将删除所有前面的重复项,其余的按顺序排列:

>>> [el for i, el in enumerate(lis) if el not in lis[i+1:]]
[2, 45, 1, 23, 546, 488, 223, 5688]

答案 2 :(得分:1)

您可以使用set()函数来实现此目的。

    a = [1,2,3,4,5,5,5,5,5,5] 
    print list(set(a)) # [1, 2, 3, 4, 5]

请记住,此可能会破坏列表的顺序。

答案 3 :(得分:0)

您可以使用Python的set()功能。并以与实现set()相同的方式将其传回列表。

set(lis)