Mi problema es simple: tengo una larga lista de elementos que quiero iterar y verificar cada elemento con una condición. Dependiendo del resultado de la condición, me gustaría eliminar el elemento actual de la lista y continuar iterando sobre él como de costumbre.Eliminar elementos de una lista mientras se itera sin usar memoria extra en Python
He leído algunos otros temas sobre este asunto. Se plantean dos soluciones para ser propuestas. Haga un diccionario fuera de la lista (lo que implica hacer una copia de todos los datos que ya están llenando toda la RAM en mi caso). O recorra la lista en reversa (lo que rompe el concepto de alogrithm que quiero implementar).
¿Hay alguna manera mejor o más elegante que esta para hacerlo?
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
Duplicado de todos estos: http://stackoverflow.com/search?q=%5Bpython%5D+list+remove. Específicamente http://stackoverflow.com/questions/1207406/remove-items-from-a-list-while-iterating-in-python –
Sí, leí atentamente el otro hilo al que enlacé antes de publicar mi pregunta. Ninguna de las respuestas propuestas en el otro hilo responde a mi preocupación. Esto se debe a que mi problema es diferente en el sentido de que copiar la lista está excluido, así como atravesarla hacia atrás. – xApple