This question already has answers here:
Modifying list while iterating [duplicate]
(7个答案)
四年前关闭。
我想遍历一个列表,并删除多次计数的项,这样它们就不会被for循环重复打印。
然而,一些只出现在列表中一次的项目似乎也受到了影响,我不明白为什么。
如有任何意见,将不胜感激。
示例输出:
输出:
因此完全忽略了4和5。
结果是:
(7个答案)
四年前关闭。
我想遍历一个列表,并删除多次计数的项,这样它们就不会被for循环重复打印。
然而,一些只出现在列表中一次的项目似乎也受到了影响,我不明白为什么。
如有任何意见,将不胜感激。
示例输出:
listy = [2,2,1,3,4,2,1,2,3,4,5]
for i in listy:
if listy.count(i)>1:
print i, listy.count(i)
while i in listy: listy.remove(i)
else:
print i, listy.count(i)
输出:
2 4
3 2
1 2
因此完全忽略了4和5。
最佳答案
迭代列表时不应修改该列表。这个应该有用:
listy = [2,2,1,3,4,2,1,2,3,4,5]
found = set()
for i in listy:
if not i in found:
print i, listy.count(i)
found.add(i)
结果是:
2 4
1 2
3 2
4 2
5 1
10-02 04:25