2016-03-25 24 views
5

Czy wyniki nie powinny być takie same? Nie rozumiem.Obsługa list logicznych w pythonach

[True,False] and [True, True] 
Out[1]: [True, True] 

[True, True] and [True,False] 
Out[2]: [True, False] 
+0

Co chcesz zrobić? – SubliemeSiem

+0

Co? Czy ta lista nie powinna mieć "wartości"? – ForceBru

+0

[a i b dla a, b w zip (x, y)], to właśnie próbuję zrobić. – Tang

Odpowiedz

2

Nie, ponieważ nie jest to sposób, w jaki działa and w Pythonie. Po pierwsze nie zawiera osobno elementów listy. Po drugie, operator and działa między dwoma obiektami i jeśli jeden z nich jest fałszywy (evaluated as False) zwraca to i jeśli oba są prawdziwe, zwraca drugi. Oto przykład:

>>> [] and [False] 
[] 
>>> 
>>> [False] and [] 
[] 
>>> [False] and [True] 
[True] 

x and y: jeśli x jest fałszywe, a następnie x, inny y

Jeśli chcesz zastosować operacje logiczne na wszystkie listy par można użyć numpy tablice :

>>> import numpy as np 
>>> a = np.array([True, False]) 
>>> b = np.array([True, True]) 
>>> 
>>> np.logical_and(a,b) 
array([ True, False], dtype=bool) 
>>> np.logical_and(b,a) 
array([ True, False], dtype=bool) 

1. Tutaj ponieważ masz do czynienia z list pustą listę zostaną ocenione jako Fałsz

+1

[a i b dla a, b w zip (x, y)], dzięki, że również działa – Tang