Ce que je dois fondamentalement, c'est de vérifier chaque élément d'une liste et si certains critères conviennent, je veux le supprimer de la liste.
Donc, par exemple, disons que P>
for s in list: if s=='b' or s=='c': list.remove(s)
4 Réponses :
Le moyen plus facile est d'utiliser une copie de la liste - elle peut être effectuée avec une tranche qui s'étend "du début" à la "fin" de la liste, comme ceci: Bien sûr, vous pouvez recourir à une boucle tandis que: p>
Jsbueno merci beaucoup. Je me sens un peu honte de ne pas penser ça. Merci encore!
En fait, j'ai voulu une boucle au sein d'une boucle et votre dernier exemple était parfait. Merci encore.
Si vous allez bien avec la création d'une copie de la liste, vous pouvez le faire comme ceci ( Compréhension de la liste ):
[s for s in list if s != 'b' and s != 'c']
Il est préférable de ne pas réinventer des choses déjà disponibles. Utilisez Filtre Fonctions et Lambda dans ces cas. Son plus pythonique et a l'air plus propre.
[x for x in ['a','b','c','d','e'] if x not in ['b','c']]
En réalité, la compréhension de la liste dans votre deuxième exemple est "plus pythonique" que la combinaison filtre et lambda.
Merci mais j'avais besoin de mettre une telle boucle dans une autre et cette façon, les choses peuvent devenir vraiment désordonnées.
C'est exactement ce que ItERTools.Ifilter est conçu pour.
[x for x in ifilter(lambda x: x not in ['b', 'c'], ['a', 'b', 'c', 'd', 'e'])]