Heim >Backend-Entwicklung >Python-Tutorial >Wie funktionieren die „any'- und „all'-Funktionen von Python und warum ist mein Tupelvergleich fehlgeschlagen?
Verstehen des Verhaltens aller Funktionen von Python
Alle Funktionen von Python bieten bequeme Möglichkeiten, den Wahrheitsgehalt mehrerer Elemente innerhalb eines Iterables zu beurteilen . any gibt True zurück, wenn ein Element True ist, während all nur dann True zurückgibt, wenn alle Elemente True sind.
any vs. all
Intuitiv kann any als visualisiert werden Reihe logischer ODER-Operatoren (||) und alles als Reihe logischer UND-Operatoren (&&). Dieses Verständnis hilft, ihre Funktionalität zu verdeutlichen:
Kurzschlüsse
Ein wichtiger Aspekt von allem und jedem ist sein Kurzschlussverhalten. Sie bewerten Elemente nacheinander, bis sie das Ergebnis bestimmen können. Diese Optimierung verhindert unnötiges Durchlaufen des gesamten Iterables.
Anwendung im gegebenen Beispiel
Im bereitgestellten Beispiel wollen wir Tupel vergleichen, um festzustellen, ob sich ein Wert unterscheidet und print True in diesem Fall. Die erwartete Ausgabe sollte [False, True, False] sein. Das tatsächlich erhaltene Ergebnis ist jedoch [Falsch, Falsch, Falsch]. Diese Diskrepanz ergibt sich aus dem verwendeten Ausdruck:
[any(x) and not all(x) for x in zip(*d['Drd2'])]
Der Ausdruck in den Klammern wird nur dann als True ausgewertet, wenn mindestens ein Element im Tupel True ist, aber nicht alle Elemente True sind. Im angegebenen Fall enthält keines der Tupel solche Werte. Daher ist das Ergebnis fälschlicherweise [Falsch, Falsch, Falsch].
Korrekte Implementierung
Um das beabsichtigte Verhalten zu erreichen, könnte man stattdessen den folgenden Ausdruck verwenden:
[x[0] != x[1] for x in zip(*d['Drd2'])]
Dieser Ausdruck vergleicht direkt das erste und zweite Element jedes Tupels und gibt True zurück, wenn sie unterschiedlich sind. Als Ergebnis würde die gewünschte Ausgabe von [Falsch, Wahr, Falsch] erhalten.
Das obige ist der detaillierte Inhalt vonWie funktionieren die „any'- und „all'-Funktionen von Python und warum ist mein Tupelvergleich fehlgeschlagen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!