我试过这个,它给出了它应该给出的输出([1,3,2]),但问题是它不停地打印输出无限次,是否有任何解决方案不改变想法代码。
a= [1,2,2,2,1,3,2]
def rem_dup(L):
while len(L):
for i in L:
y= L.count(i)
if y>1:
L.remove(i)
print L
rem_dup(a)
答案 0 :(得分:2)
除非这个功能的目的是锻炼你的python技能,否则听起来你想要一个set
。集合类似于列表但不允许重复值。如果您希望最终的数据结构成为列表,可以执行以下操作:
final_list = list(set(original_list))
答案 1 :(得分:2)
安全地执行此操作的一种方法是反向循环遍历列表并仅从后面删除:
>>> for i in range(len(a) - 1, -1, -1):
... if a.count(a[i]) > 1:
... del a[i]
...
>>> a
[1, 2, 3]
但这将是多项式时间,因为a.count
是线性的,因此del a[i]
。
答案 2 :(得分:1)
while len(L)
只要L
有一些东西开始就一直都是真的
在for
循环中使用它时修改L会导致跳过项目,因此您有一些输入错误。
如果您解决了这个问题,则不应该使用while循环。
答案 3 :(得分:0)
只要a
中的项目是可以播放的,并且您不介意在开始时其余项目的顺序不同,您可以创建一个中级{{1}并原位替换原始内容。
set