Ich habe eine Liste bestehend aus etwa 20000 Listen. Ich benutze das 3. Element jeder Liste als Flag. Ich möchte einige Operationen an dieser Liste ausführen, solange mindestens ein Element-Flag 0 ist. Es ist wie folgt:
my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], .....]
Am Anfang sind alle Flags 0. Ich benutze eine while-Schleife, um zu überprüfen, ob das Flag eines Elements 0 ist:
def check(list_):
for item in list_:
if item[2] == 0:
return True
return False
Wenn check(my_list)
zurückkommt True
, arbeite ich weiter an meiner Liste:
while check(my_list):
for item in my_list:
if condition:
item[2] = 1
else:
do_sth()
Eigentlich wollte ich ein Element in my_list entfernen, während ich darüber iterierte, aber ich darf keine Elemente entfernen, während ich darüber iteriere.
Die ursprüngliche my_list hatte keine Flags:
my_list = [["a", "b"], ["c", "d"], ["e", "f"], .....]
Da ich beim Durchlaufen keine Elemente entfernen konnte, habe ich diese Flags erfunden. Aber das my_list
enthält viele Elemente, und die while
Schleife liest alle in jeder for
Schleife und es kostet viel Zeit! Hast du irgendwelche Vorschläge?
None
oder []
beim Durchlaufen der Liste ersetzen, anstatt sie zu entfernen. Das Überprüfen der gesamten Liste mit 'check ()', das alle Elemente vor jedem Durchlauf der inneren Schleife durchläuft, ist ein sehr langsamer Ansatz.