Mon problème est simple: j'ai une longue liste d'éléments que je veux parcourir et vérifier chaque élément par rapport à une condition. En fonction du résultat de la condition, je voudrais supprimer l'élément actuel de la liste, et continuer à itérer dessus comme d'habitude.Supprimer des éléments d'une liste en cours d'itération sans utiliser de mémoire supplémentaire en Python
J'ai lu quelques autres discussions sur ce sujet. Deux solutions de couture à proposer. Soit faire un dictionnaire hors de la liste (ce qui implique de faire une copie de toutes les données qui remplissent déjà toute la RAM dans mon cas). Soit marcher la liste à l'envers (ce qui rompt le concept de l'alogrithme que je veux implémenter).
Y a-t-il un moyen meilleur ou plus élégant de le faire?
def walk_list(list_of_g):
g_index = 0
while g_index < len(list_of_g):
g_current = list_of_g[g_index]
if subtle_condition(g_current):
list_of_g.pop(g_index)
else:
g_index = g_index + 1
Dupliquer de tous ces éléments: http://stackoverflow.com/search?q=%5Bpython%5D+list+remove. Oui http://stackoverflow.com/questions/1207406/remove-items-from-a-list-while-iterating-in-python –
Oui, je lis attentivement cet autre sujet auquel vous avez lié avant de poster ma question. Aucune des réponses proposées dans l'autre fil de discussion ma préoccupation. C'est parce que mon problème diffère dans le sens que la copie de la liste est exclue ainsi que de la parcourir à rebours. – xApple