【发布时间】:2011-03-25 21:20:53
【问题描述】:
我想删除列表中包含(或不包含)一组特定字符的所有元素,但是我遇到了迭代列表和删除元素时遇到的问题。下面给出了两个几乎相同的例子。如您所见,如果两个应该删除的元素直接紧随其后,则第二个元素不会被删除。
我确信在 python 中有一种非常简单的方法可以做到这一点,所以如果有人知道,请帮助我 - 我目前正在制作整个列表的副本并迭代一个,并删除另一个中的元素。 ..我认为这不是一个好的解决方案
>>> l
['1', '32', '523', '336']
>>> for t in l:
... for c in t:
... if c == '2':
... l.remove(t)
... break
...
>>> l
['1', '523', '336']
>>> l = ['1','32','523','336','13525']
>>> for w in l:
... if '2' in w: l.remove(w)
...
>>> l
['1', '523', '336']
想通了:
>>> l = ['1','32','523','336','13525']
>>> [x for x in l if not '2' in x]
['1', '336']
仍然想知道在使用 for x in l 时是否有任何方法可以将迭代设置回一组。
【问题讨论】:
标签: python list data-structures