2016-03-25 34 views
5

I risultati non dovrebbero essere uguali? Non capisco.Operazione booleana in python

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

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

Cosa stai cercando di fare? – SubliemeSiem

+0

Cosa? Questa lista non dovrebbe essere 'e' valore-saggio? – ForceBru

+0

[aeb per a, b in zip (x, y)], questo è quello che sto cercando di fare. – Tang

risposta

2

No, perché non è il modo in cui l'operazione and funziona in python. Prima di tutto non è and gli elementi della lista separatamente. In secondo luogo, l'operatore and opera tra due oggetti e, se uno di essi è False (evaluated as False), restituisce che, se entrambi sono True, restituisce il secondo. Ecco un esempio:

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

x and y: se x è falso, allora x, altrimenti y

Se si desidera applicare le operazioni logiche su tutte le liste coppie che è possibile utilizzare le matrici numpy :

>>> 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. Qui in quanto si tratta di liste di un elenco vuoto verrà valutato come False

+1

[aeb per a, b in zip (x, y)], grazie, che funziona anche – Tang