Maison >développement back-end >Tutoriel Python >Comment supprimer en toute sécurité des éléments d'une liste lors d'une itération en Python ?

Comment supprimer en toute sécurité des éléments d'une liste lors d'une itération en Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-30 05:05:09870parcourir

How to Safely Remove Elements from a List While Iterating in Python?

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

  • La détermination La fonction est un espace réservé pour votre fonction de critères personnalisés qui détermine les éléments à supprimer.
  • L'affectation des tranches La solution peut être utile si d'autres références à somelist doivent refléter les changements.
  • Si vous avez uniquement besoin de vérifier une valeur spécifique, vous pouvez utiliser les instructions if directement dans la boucle.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn