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

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

Barbara Streisand
Barbara Streisandoriginal
2024-12-28 10:45:12219parcourir

How Can I Safely Remove Items from a List While Iterating in Python?

Suppression d'éléments lors d'une itération de liste

Lors d'une itération sur une liste en Python, il peut devenir nécessaire de supprimer certains éléments en fonction de critères spécifiques . Cependant, tenter de supprimer un élément directement au cours de l’itération peut entraîner un comportement inattendu. C'est là que se pose le besoin de méthodes alternatives.

Compréhension de liste

Une solution consiste à utiliser la compréhension de liste, qui permet de créer une nouvelle liste contenant uniquement les éléments souhaités. Par exemple :

somelist = [x for x in somelist if not determine(x)]

Cette compréhension crée une nouvelle liste qui inclut tous les éléments de somelist où la fonction déterminer() est évaluée à False.

Mutation avec découpage

Une autre approche consiste à muter la liste existante à l'aide de tranches. En attribuant à somelist[:], la liste peut être modifiée pour contenir uniquement les éléments acceptables :

somelist[:] = [x for x in somelist if not determine(x)]

Cette méthode conserve la référence de liste d'origine, ce qui la rend utile lorsque d'autres parties du programme ont besoin d'accéder au liste modifiée.

Itertools

En Python 2 ou 3, itertools peut être utilisé pour réaliser le même résultat. En Python 2 :

from itertools import ifilterfalse
somelist[:] = ifilterfalse(determine, somelist)

En Python 3 :

from itertools import filterfalse
somelist[:] = filterfalse(determine, somelist)

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