Wie kann man 'false' zurückgeben, weil alle Elemente 'false' sind?
Die angegebene Liste lautet:
data = [False, False, False]
Antworten:
Verwenden von any:
>>> data = [False, False, False]
>>> not any(data)
True
any gibt True zurück, wenn das iterable einen Wahrheitswert enthält.
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 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:
>>> not any(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).
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)
all:all(not x for x in data)