如何在python中删除列表中的重复项?我尝试,我得到了。 我使用嵌套循环搜索列表并捕获重复的一个,但我有问题“列出超出范围”,我添加try块忽略它。任何人都可以向我解释为什么我有这个问题以及如何避免它? 我怎么能改进它?
from random import randint
print("List Befor")
print()
g = []
for i in range(100):
h = randint(1,100)
g.append(h)
print(g)
print("List After")
print()
for i in range(len(g)):
for j in range(len(g)):
if i == j:
continue
else:
try:
if g[i] == g[j]:
g.pop(j)
except:
continue
print(g)
print(len(g))
答案 0 :(得分:4)
您可以简单地使用:
no_duplicates = list(set(your_list))
编辑:如果您不希望订单改名,可以使用OrderedDict
:
from collections import OrderedDict
no_duplicates = list(OrderedDict.fromkeys(your_list))
答案 1 :(得分:2)
当您删除项目时,列表的长度将变小,但您的for循环仍将迭代到100 - 列表的原始长度。因此,一旦您删除项目时达到更高的索引,您将尝试访问超出范围的项目(因此错误)。
有很多方法可以从列表中删除重复项:Removing duplicates in lists