2017-06-13 3 views

Antwort

1

Ihr iterabler Wert enthält 0 und 0 ergibt False.

1

In Python ist die ganze Zahl 0 gleich Falsch.

+0

True, aber 'all()' kümmert sich nicht um Gleichheit. 'None' ist nicht gleich' False', noch sind '0.0' oder'() 'oder' [] ', aber alle diese Werte * werden in einem Booleschen Kontext * als falsch getestet, was hier von Bedeutung ist. –

6

all() gibt true zurück, wenn alle Werte wahr sind, die function documentation sehen: sind

Return True wenn alle Elemente des iterable wahr (oder wenn das iterable leer ist).

0 ist kein echter Wert:

>>> bool(0) 
False 

Siehe Truth Value Testing section der Python-Standardtypen Dokumentation:

Folgende Werte werden als falsch:

[.. .]

  • Null eines beliebigen numerischen Typs, z. B. 0, 0.0, 0j.
-1

Um zu überprüfen, ob das Array Booleschen Wert „False“ überall enthält (wie ich denke, Sie zu tun hatte beabsichtigt), tun einfach:

if all(map(lambda v: v is not False, [0, 4, "Sample string"])): 
    print "Yes" 
else: 
    print "No" 
+0

Ich wollte eigentlich überprüfen, ob alle Werte vorhanden sind, d. H. "Nicht null", also ist 0 ein akzeptabler Wert. Obwohl ich vergessen hatte, dass es gleich einem booleschen False sein wird. –

Verwandte Themen