如何从一个列表中删除所有重复项

78

如何使用Python来检查并删除列表中的所有重复项?我不想指定要删除的重复项 - 我希望代码能够自动找出是否有任何重复项,如果有,则将它们删除,并只保留每个重复项的一个实例。如果列表中有多个重复项,它也必须正常工作。

例如,在下面的代码中,列表lseparatedOrbList有12个项 - 一个重复了六次,一个重复了五次,另一个则只出现了一次。我想要更改这个列表,使其只有三个项目 - 每个项目只出现一次,并且与之前出现的顺序相同。我尝试了以下代码:

for i in lseparatedOrbList:
   for j in lseparatedOrblist:
        if lseparatedOrbList[i] == lseparatedOrbList[j]:
            lseparatedOrbList.remove(lseparatedOrbList[j])

但是我遇到了这个错误:

Traceback (most recent call last):
  File "qchemOutputSearch.py", line 123, in <module>
    for j in lseparatedOrblist:
NameError: name 'lseparatedOrblist' is not defined

我猜是因为我试图在循环遍历lseparatedOrbList时对它进行了另一个循环遍历,但我想不出其他方法来做到这一点。


你需要维护列表的顺序吗? - Will McCutchen
一个常见的问题:http://stackoverflow.com/search?q=python+duplicates+list。 - S.Lott
2
你的错误是由于一个简单的打字错误引起的:在第二个for循环中,你没有将lseparatedOrbList的第二个“l”大写。 - ApproachingDarknessFish
11个回答

-3

通过这种方式,可以删除列表中出现多次的特定项:尝试删除所有5个。

list1=[1,2,3,4,5,6,5,3,5,7,11,5,9,8,121,98,67,34,5,21]
print list1
n=input("item to be deleted : " )
for i in list1:
    if n in list1:
        list1.remove(n)
print list1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接