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