Votre meilleure approche pour un tel exemple serait une compréhension de liste
somelist = [tup for tup in somelist if determine(tup)]
Dans le cas où vous êtes en train de faire quelque chose de plus complexe que de faire appel à un determine
de la fonction, je préfère la construction d'une nouvelle liste et simplement en ajoutant à cela que je vais. Par exemple
newlist = []
for tup in somelist:
# lots of code here, possibly setting things up for calling determine
if determine(tup):
newlist.append(tup)
somelist = newlist
La copie de la liste à l'aide de remove
peut rendre votre code un peu plus propre, tel que décrit dans l'une des réponses ci-dessous. Vous devriez certainement pas le faire pour les très grandes listes, puisqu'il s'agit d'abord de la copie de l'ensemble de la liste, et aussi l'accomplissement de l' O(n)
remove
opération pour chaque élément est supprimé, ce qui en fait un O(n^2)
de l'algorithme.
for tup in somelist[:]:
# lots of code here, possibly setting things up for calling determine
if determine(tup):
newlist.append(tup)