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 iterable
als wahre Werte betrachtet werden (wie reduce(operator.and_, iterable)
).
any(iterable)
Gibt True zurück, wenn mindestens ein Element von iterable
ein True-Wert ist (wiederum unter Verwendung von Funktionsmaterial reduce(operator.or_, iterable)
).
Mit der all
Funktion 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 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).
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)