我正在编写一个删除列表中重复项的程序,而我却无法弄清楚如何找到重复项的位置?
#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
答案 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)