我正在checkio上练习编写一个函数来排除a中的唯一元素list
,并仅保留非唯一元素。我写了以下几行。
def checkio(data):
for i in data:
if data.count(i) == 1:
data.remove(i)
return data
然后做了以下测试。
checkio([1, 2, 3, 1, 3]) == [1, 3, 1, 3]
checkio([1, 2, 3, 4, 5]) == []
checkio([5, 5, 5, 5, 5]) == [5, 5, 5, 5, 5]
checkio([10, 9, 10, 10, 9, 8]) == [10, 9, 10, 10, 9]
但是第二项测试不会通过。它返回
而不是返回一个空数组。这是为什么?我在这里先向您的帮助表示感谢![]
[2,4]
代码会自我陷阱。问题在于,这for in data:...
需要data[0]
您列表的第一项。1
是唯一的,因此您的程序将从data
列表中删除1 。data
现在是:[2,3,4,5]
。现在for-in循环继续进行,data[1]
现在是number 3
。3
也很独特,因此将其删除。您的清单现在是:data = [2,4,5]
。现在,您的代码继续进行data[2]
,即5
。它已被删除。最后data = [2,4]
剩下了。尝试为您的问题找到另一种解决方案。希望我能为您服务。
编辑:您不应该从列表中删除项目。尝试创建一个新列表,在其中放置所有非唯一项。尝试使用“小于”和“大于”关系(<,>
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句