On 18/04/2008, Robert Kern <[EMAIL PROTECTED]> wrote:
> On Fri, Apr 18, 2008 at 3:33 PM, Joe Harrington <[EMAIL PROTECTED]> wrote:
>  > For that matter, is there a reason logical operations don't work on
>  >  arrays other than booleans?  What about:
>
> The keywords "and", "or", and "not" only work on bool objects; Python
>  tries to convert the operands using bool(). bool(some_array) raises
>  the exception just as we've been discussing.

This is a bit misleading, as the actual value is returned:

In [167]: "" or "A"
Out[167]: 'A'

In [168]: "A" and "B"
Out[168]: 'B'

In fact the problem is that "and" and "or" are short-circuiting, which
means that "return X or Y" is equivalent to something like:
if X:
    return X
elif Y:
    return Y
else:
    return False

These are handled specially by syntax so that, for example, you can do
"False and 1/0" and not raise a ZeroDivisionError. So "and" and "or"
aren't even really operators, and it's not just impossible to change
them but unlikely to ever become possible. Just cast your arrays to
booleans if you want to do boolean operations on them.

Anne
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to