迭代列表并删除重复元素时循环问题

Lou*_*s93 2 python iterator loops list

我想迭代一个列表,并删除多次计数的项目,因此它们不会被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)
Run Code Online (Sandbox Code Playgroud)

输出:

 2 4
 3 2
 1 2
Run Code Online (Sandbox Code Playgroud)

因此完全忽略了4和5.

Ach*_*him 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)
Run Code Online (Sandbox Code Playgroud)

结果是:

2 4
1 2
3 2
4 2
5 1
Run Code Online (Sandbox Code Playgroud)