从包含特定字符的列表中删除元素

2024-04-24 19:16:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我想删除一个包含(或不包含)一组特定字符的列表中的所有元素,但是在遍历列表和删除元素时遇到了问题。下面给出了两个几乎相等的例子。如您所见,如果应该删除的两个元素彼此紧跟在一起,则不会删除第二个元素。

我确信在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时,是否有任何方法可以将迭代设置回一个集合。


Tags: 方法in元素列表forifnot解决方案
3条回答

列表理解:

>>> l = ['1', '32', '523', '336']
>>> [ x for x in l if "2" not in x ]
['1', '336']
>>> [ x for x in l if "2" in x ]
['32', '523']

如果我理解正确

[x for x in l if "2" not in x]

可能会做这项工作。

你可能会遇到的问题是,当你在for t循环中循环时,你试图修改序列l。

相关问题 更多 >