Cuando estoy escribiendo código en Python, a menudo necesito eliminar elementos de una lista u otro tipo de secuencia en función de algunos criterios. No he encontrado una solución que sea elegante y eficiente, ya que eliminar elementos de una lista que está iterando actualmente es malo. Por ejemplo, no se puede hacer esto:¿Manera elegante de eliminar elementos de la secuencia en Python?
for name in names:
if name[-5:] == 'Smith':
names.remove(name)
Por lo general terminan haciendo algo como esto:
toremove = []
for name in names:
if name[-5:] == 'Smith':
toremove.append(name)
for name in toremove:
names.remove(name)
del toremove
Ésta es innefficient, bastante feo y posiblemente con errores (¿cómo manejar múltiples 'John Smith 'entradas?). ¿Alguien tiene una solución más elegante, o al menos una más eficiente?
¿Qué tal uno que funciona con los diccionarios?
Su código elimina múltiples Smiths o lo editó? – systemovich