Hinweis: Dies funktioniert nicht, wenn Sie nicht-boolesche Daten in das Array aufnehmen.
Statisch
@ HaroldSeefeld, Trynot any([0, 0, 0])
Falsetru
3
@HaroldSeefeld wird es, Python kann die Wahrhaftigkeit aller eingebauten Typen
testen
2
0, [], {}, () .. usw. sind alle falsche nicht-boolesche Daten .. :)
Iron Fist
30
Grundsätzlich gibt es zwei Funktionen, die sich mit einem Iterable befassen und True oder False zurückgeben, je nachdem, zu welchen Booleschen Werten Elemente der Sequenz ausgewertet werden.
all(iterable)Gibt True zurück, wenn alle Elemente von iterableals wahre Werte betrachtet werden (wie reduce(operator.and_, iterable)).
any(iterable)Gibt True zurück, wenn mindestens ein Element von iterableein True-Wert ist (wiederum unter Verwendung von Funktionsmaterial reduce(operator.or_, iterable)).
Mit der allFunktion können Sie operator.not_Ihre Liste zuordnen oder einfach eine neue Sequenz mit negierten Werten erstellen und überprüfen, ob alle Elemente der neuen Sequenz wahr sind:
>>> all(not element for element in data)
Mit der anyFunktion können Sie überprüfen, ob mindestens ein Element wahr ist, und dann das Ergebnis negieren, da Sie zurückgeben müssen, Falsewenn es ein wahres Element gibt:
>>> notany(data)
Nach dem Gesetz von De Morgan werden diese beiden Varianten das gleiche Ergebnis anyliefern , aber ich würde die letzte (die verwendet wird ) bevorzugen, da sie kürzer und lesbarer ist (und intuitiv als "es gibt keinen wahren Wert in Daten" verstanden werden kann ") und effizienter (da Sie keine zusätzlichen Sequenzen erstellen).
all
:all(not x for x in data)
not any([0, 0, 0])
Grundsätzlich gibt es zwei Funktionen, die sich mit einem Iterable befassen und True oder False zurückgeben, je nachdem, zu welchen Booleschen Werten Elemente der Sequenz ausgewertet werden.
all(iterable)
Gibt True zurück, wenn alle Elemente voniterable
als wahre Werte betrachtet werden (wiereduce(operator.and_, iterable)
).any(iterable)
Gibt True zurück, wenn mindestens ein Element voniterable
ein True-Wert ist (wiederum unter Verwendung von Funktionsmaterialreduce(operator.or_, iterable)
).Mit der
all
Funktion können Sieoperator.not_
Ihre Liste zuordnen oder einfach eine neue Sequenz mit negierten Werten erstellen und überprüfen, ob alle Elemente der neuen Sequenz wahr sind:>>> all(not element for element in data)
Mit der
any
Funktion können Sie überprüfen, ob mindestens ein Element wahr ist, und dann das Ergebnis negieren, da Sie zurückgeben müssen,False
wenn es ein wahres Element gibt:>>> not any(data)
Nach dem Gesetz von De Morgan werden diese beiden Varianten das gleiche Ergebnis
any
liefern , aber ich würde die letzte (die verwendet wird ) bevorzugen, da sie kürzer und lesbarer ist (und intuitiv als "es gibt keinen wahren Wert in Daten" verstanden werden kann ") und effizienter (da Sie keine zusätzlichen Sequenzen erstellen).quelle
any()
Lösung stoppt, sobald sie einen wahren Wert findet, und ist daher normalerweise schneller.Komm schon, Leute, er hat darum gebeten, True zurückzugeben, ob es True gibt. Das Gleiche sagen, Falsch, wenn alle Falsch sind.
any(data)
quelle