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
Libérer: 2024-12-30 05:05:09
original
853 Les gens l'ont consulté

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?
Copier après la connexion

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)]
Copier après la connexion

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)]
Copier après la connexion

Cette affectation mute la liste existante pour contenir uniquement les éléments souhaités.

3. Itertools

from itertools import filterfalse
somelist[:] = filterfalse(determine, somelist)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal