Python UND Operator auf zwei booleschen Listen - wie?

Habe ich zwei boolean-Listen, z.B.,

x=[True,True,False,False]
y=[True,False,True,False]

Ich will UND diese Listen zusammen mit dem erwarteten Ausgang:

xy=[True,False,False,False]

Dachte ich, dass der Ausdruck x and y würde, doch kam zu entdecken, dass es nicht: in der Tat (x and y) != (y and x)

Ausgabe von x and y: [True,False,True,False]

Ausgabe von y and x: [True,True,False,False]

Mit list comprehension hat korrekte Ausgabe. Uff!

xy = [x[i] and y[i] for i in range(len(x)]

Verstand Sie, ich konnte nicht finden jede Bezugnahme sagte mir, ich den UND-operator funktionieren würde, wie ich versuchte, mit x und y ist. Aber es ist einfach zu versuchen, die Dinge in Python.
Kann jemand mir erklären was ist passiert mit x and y?

Und hier ist ein einfaches test-Programm:

import random
random.seed()
n = 10
x = [random.random() > 0.5 for i in range(n)]
y = [random.random() > 0.5 for i in range(n)]
# Next two methods look sensible, but do not work
a = x and y
z = y and x
# Next: apparently only the list comprehension method is correct
xy = [x[i] and y[i] for i in range(n)]
print 'x        : %s'%str(x)
print 'y        : %s'%str(y)
print 'x and y  : %s'%str(a)
print 'y and x  : %s'%str(z)
print '[x and y]: %s'%str(xy)
Kommentar zu dem Problem
ist x eine Liste ist, y eine Liste. x und y ist true, wenn und nur wenn beide Listen nicht-leer ist (eine leere Liste ist falsch-y', alle nicht-leere Listen sind "Wahrheit-y'): x und y ist nicht 'und jedes element' oder sonst kümmern sich die Werte. Kommentarautor: user2864740

InformationsquelleAutor der Frage Glenn N | 2015-08-24

Schreibe einen Kommentar