Я хочу удалить все элементы из списка, который содержит (или не содержит) набор конкретных символов, однако я запускаю проблемы, итерации по списку и удаление элементов как Я иду. Ниже приведены два довольно равных примера этого. Как вы можете видеть, если два элемента, которые должны быть удалены, непосредственно следуют друг за другом, второй не удаляется.Удаление элементов из списка, содержащего определенные символы
Я уверен, что в 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']
еще хотел бы знать, есть ли способ установить итерации назад один набор при использовании для й в л хоть.
Dupe-ish: http: //stackoverflow.com/questions/1207406/remove-items-from-a-list-while-iterating-in-python – bhangm
Примите ответ, который помог вам решить вашу проблему вместо добавления «Разрешено» к названию. Нажмите зеленую галочку рядом с ответом, чтобы принять ее. (Если ни один из ответов не помог вам, пожалуйста, добавьте ответ самостоятельно, объяснив, как вы решили проблему.) Спасибо, и добро пожаловать в Stack Overflow. –