gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:57:14 27 4
gpt4 key购买 nike

我想删除列表中包含(或不包含)一组特定字符的所有元素,但是我遇到了迭代列表和删除元素时遇到的问题。下面给出了两个几乎相同的例子。如您所见,如果两个应该删除的元素直接紧随其后,则第二个元素不会被删除。

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

最佳答案

列表推导:

l = ['1', '32', '523', '336']

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

# Returns: ['1', '336']

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

# Returns: ['32', '523']
l = ['1', '32', '523', '336']
stringVal = "2"

print(f"{[ x for x in l if stringVal not in x ]}")

# Returns: ['1', '336']

print(f"{[ x for x in l if stringVal in x ]}")

# Returns: ['32', '523']

关于python - 从包含特定字符的列表中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3416401/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com