python - todos - Eliminar elementos de una lista que contiene caracteres específicos
eliminar un elemento de una lista java (3)
Quiero eliminar todos los elementos de una lista que contenga (o no contenga) un conjunto de caracteres específicos, sin embargo, tengo problemas para iterar sobre la lista y eliminar elementos a medida que avanzo. Dos ejemplos bastante iguales de esto se dan a continuación. Como puede ver, si dos elementos que deben eliminarse están seguidos directamente, el segundo no se elimina.
Estoy seguro de que hay una manera muy fácil de hacer esto en Python, así que si alguien lo sabe, por favor, ayúdeme. Actualmente estoy haciendo una copia de toda la lista e iterando sobre una, y eliminando elementos en la otra ... No una buena solución asumo
>>> 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'']
Lo averigué:
>>> l = [''1'',''32'',''523'',''336'',''13525'']
>>> [x for x in l if not ''2'' in x]
[''1'', ''336'']
Aún me gustaría saber si hay alguna forma de restablecer la iteración un conjunto cuando se usa para x en l.
El problema que podría tener es que está tratando de modificar la secuencia al mismo tiempo que lo recorre en t bucle.
Lista de comprensiones:
>>> 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'']
Si te entiendo correctamente
[x for x in l if "2" not in x]
podría hacer el trabajo