Wie Pythons beliebige und alle Funktionen funktionieren
Beim Vergleich von Tupeln kommen sowohl die integrierten Funktionen „any()“ als auch „all()“ zum Tragen spielen. Sie unterscheiden sich wie folgt:
any()
any() wird als True ausgewertet, wenn mindestens ein Element in einer Iterable wahr ist (d. h. nicht False, 0, '' usw.).
all()
all(), andererseits Andererseits gibt es nur dann „True“ zurück, wenn jedes Element in einer Iterable wahr ist.
Den Anwendungsfall verstehen
Im bereitgestellten Codeausschnitt:
print [any(x) and not all(x) for x in zip(*d['Drd2'])]
Jedes der Tupel in zip(*d['Drd2']) wird im Kontext von any(x) und nicht von all(x) ausgewertet. Die unerwartete Ausgabe von [Falsch, Falsch, Falsch] wirft jedoch Fragen auf.
Fehlerinterpretation
Gemäß der Wahrheitstabelle für alle und alle:
any(x) | all(x) | any(x) and not all(x) |
---|---|---|
True | False | True |
False | True | False |
True | True | False |
False | False | False |
In diesem Fall bestehen alle Tupel aus identischen Zahlen (d. h. wahren Werten), sodass „any(x)“ immer „true“ wäre und „all(x)“ wäre auch wahr. Folglich sollte „any(x)“ und nicht „all(x)“ immer „Falsch“ ergeben, was sich nicht in der Ausgabe widerspiegelt.
Fehlerursache
Der Fehler liegt in der irrigen Erwartung, dass (x[0] != x[1]) ein wahrer Ausdruck wäre. Wenn jedoch die Zahlen im Tupel gleich sind (z. B. (1, 1)), wird (x[0] != x[1]) als Falsch ausgewertet.
Korrekte Logik
Um genau zu bestimmen, ob Werte innerhalb eines Tupels unterschiedlich sind, können Sie die folgende Logik verwenden:
print [x[0] != x[1] for x in zip(*d['Drd2'])]
Dieser Ausdruck korrekt vergleicht die entsprechenden Elemente jedes Tupels, um etwaige Unterschiede wie beabsichtigt zu identifizieren.
Das obige ist der detaillierte Inhalt vonWie verhalten sich die Python-Funktionen „any()' und „all()' beim Vergleich von Tupeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!