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

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

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

3 Solutions collect form web for “Удаление элементов из списка, содержащего определенные символы”

Перечни:

 >>> 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'] 

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

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

может выполнить эту работу.

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

Python - лучший язык программирования в мире.