Удаление элементов из списка, содержащего определенные символы

Я хочу удалить все элементы в списке, который содержит (или не содержит), ряд определенных символов, однако я работаю в к итерации задач по списку и удалению элементов, поскольку я продвигаюсь. Два в значительной степени равных примера этого даны ниже. Как Вы видите, если два элемента, которые должны быть удалены, непосредственно следуют друг за другом, второй не становится удаленным.

Я уверен, что существует очень простой способ сделать это в 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']

Все еще хотел бы знать, существует ли какой-либо способ установить повторение, поддерживают набор того при использовании для x в l все же.

34
задан Bill the Lizard 5 August 2010 в 15:46
поделиться

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']
57
ответ дан 27 November 2019 в 16:41
поделиться

Если я вас правильно понимаю,

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

может сработать.

8
ответ дан 27 November 2019 в 16:41
поделиться

Проблема, которая может возникнуть у вас, заключается в том, что вы пытаетесь изменить последовательность l в тот же момент, когда вы перебираете ее в цикле for t.

0
ответ дан 27 November 2019 в 16:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: