Wie um zu überprüfen, ob alle Elemente einer Liste entspricht einem Zustand?

Ich habe eine Liste, bestehend aus wie 20000 Listen. Ich nutze jede Liste das 3. element, wie eine fahne. Ich möchte einige Vorgänge auf dieser Liste so lange wie mindestens ein element ist-flag ist 0, es ist wie:

my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], .....]

In der Anfang, alle flags auf 0. Ich benutze eine while-Schleife, um zu überprüfen, wenn mindestens ein element ist-flag ist 0:

def check(list_):
    for item in list_:
        if item[2] == 0:
            return True
    return False

Wenn check(my_list) zurück True, dann 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 entfernen, in my_list ein als ich der Iteration ist es, aber ich darf nicht, um Elemente zu entfernen, wie ich Durchlaufen.

Original my_list ein nicht-flags:

my_list = [["a", "b"], ["c", "d"], ["e", "f"], .....]

Da konnte ich nicht entfernen, die Elemente wie ich Sie iteriert über es, ich erfand diese Flaggen. Aber die my_list viele Elemente enthält, und while Schleife liest alle von Ihnen an jedem for Schleife, und es verbraucht viel Zeit! Haben Sie irgendwelche Vorschläge?

Sieht aus wie Ihre Datenstruktur ist nicht ideal für dein problem. Wenn Sie erklärt den Kontext ein wenig mehr könnten wir vielleicht vorschlagen, etwas besser geeignet.
Vielleicht könnten Sie ersetzen die Elemente, die mit None oder [] als Sie die Liste Durchlaufen, anstatt Sie zu entfernen. Überprüfen Sie die ganze Liste mit 'check()` Iteration über alle Elemente vor jedem pass auf die innere Schleife ist eine sehr langsame Annäherung.

InformationsquelleAutor alwbtc | 2012-05-19

Schreibe einen Kommentar