Tôi có hai danh sách boolean, ví dụ:Toán tử Python AND trên hai danh sách boolean - làm cách nào?
x=[True,True,False,False]
y=[True,False,True,False]
Tôi muốn VÀ các danh sách này với nhau, với sản lượng dự kiến:
xy=[True,False,False,False]
Tôi nghĩ rằng biểu x and y
sẽ làm việc, nhưng đến khám phá ra rằng nó không: trên thực tế, (x and y) != (y and x)
Sản lượng x and y
: [True,False,True,False]
Sản lượng y and x
: [True,True,False,False]
Sử dụng danh sách hiểu không có đầu ra chính xác. Whew!
xy = [x[i] and y[i] for i in range(len(x)]
Tôi không thể tìm thấy bất kỳ tham chiếu nào cho tôi biết toán tử AND sẽ hoạt động như tôi đã thử với x và y. Nhưng thật dễ dàng để thử mọi thứ bằng Python. Ai đó có thể giải thích cho tôi điều gì đang xảy ra với x and y
?
Và đây là một chương trình thử nghiệm đơn giản:
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)
x là một danh sách, y là một danh sách. 'x và y' là true nếu và chỉ khi cả hai danh sách không trống (một danh sách trống là 'false-y', tất cả các danh sách không trống là 'truth-y'): đó là' x và y' * không * 'và mỗi phần tử' hoặc quan tâm đến các giá trị khác. – user2864740