Quand je suis à l'écriture de code en Python, j'ai souvent besoin de supprimer des éléments à partir d'une liste ou d'un autre type de séquence en fonction de certains critères. Je n'ai pas trouvé une solution élégante et efficace, que de supprimer des éléments à partir d'une liste que vous sont actuellement à itérer est mauvais. Par exemple, vous ne pouvez pas faire ceci:
for name in names:
if name[-5:] == 'Smith':
names.remove(name)
J'ai l'habitude de faire quelque chose comme ceci:
toremove = []
for name in names:
if name[-5:] == 'Smith':
toremove.append(name)
for name in toremove:
names.remove(name)
del toremove
C'est innefficient, assez laid et éventuellement buggy (comment fait-il gérer plusieurs "John Smith" entrées?). Quelqu'un aurait-il une solution plus élégante, ou au moins plus efficace?
Que diriez-vous celui qui fonctionne avec les dictionnaires?