Suppression d'éléments d'une liste pendant une itération
Lorsque vous parcourez une liste en Python, il est important de savoir comment supprimer des éléments qui répondent à des critères. Cependant, tenter de modifier une liste lors d'une itération peut soulever des problèmes.
Le dilemme
Considérez le bloc de code suivant :
for tup in somelist: if determine(tup): # How do I remove 'tup' here?
Comment peut-on vous supprimez tup de la liste tout en préservant le itérateur ?
Solutions
Il existe plusieurs solutions à ce problème :
1. Compréhension de liste
somelist = [x for x in somelist if not determine(x)]
Cette méthode crée une nouvelle liste contenant uniquement les éléments qui n'ont pas besoin d'être supprimés.
2. Assignation de tranche
somelist[:] = [x for x in somelist if not determine(x)]
Cette affectation mute la liste existante pour contenir uniquement les éléments souhaités.
3. Itertools
from itertools import filterfalse somelist[:] = filterfalse(determine, somelist)
Cette approche utilise la fonction filterfalse de Python pour filtrer les éléments indésirables.
Notes supplémentaires
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!