我想删除一个包含(或不包含)一组特定字符的列表中的所有元素,但是在遍历列表和删除元素时遇到了问题。下面给出了两个几乎相等的例子。如您所见,如果应该删除的两个元素彼此紧跟在一起,则不会删除第二个元素。
我确信在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']
不过,我还是想知道在l中使用x时,是否有任何方法可以将迭代设置回一个集合。
列表理解:
如果我理解正确
可能会做这项工作。
你可能会遇到的问题是,当你在for t循环中循环时,你试图修改序列l。
相关问题 更多 >
编程相关推荐