Я хочу удалить все элементы в списке, который содержит (или не содержит) набор конкретных символов, однако я бегу к проблемам, итерации по списку и удалению элементов по мере продвижения. Ниже приведены два довольно равных примера этого. Как вы можете видеть, если два элемента, которые должны быть удалены, непосредственно следуют друг за другом, второй не удаляется.
Я уверен, что в 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.