KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
What is the specific code, in order, being executed when I ask for something like >>> 1 <= 3 >= 2 True If both have equal precedence and it's just the order of their evaluation, why does the second inequality function as (3 >= 2) instead of (True >= 2) Consider for example the difference between these >>> (1 < 3) < 2 True >>> 1 < 3 < 2 False Is it just a pure syntactical short-cut hard-coded into Python to expand the second as the and of the two statements? Could I change this behavior for a class, such that a <= b <= c gets expanded to something different? It's looking like the following is the case a (logical operator) b (logical operator) c --> (a logical operator b) and (b logical operator c) but the real question is how this gets implemented in code. I'm curious so that I can replicate this kind of __lt__ and __gt__ behavior in some of my own classes, but I am confused about how this is accomplished holding the middle argument constant. Here's a specific example: >>> import numpy as np >>> tst = np.asarray([1,2,3,4,5,6]) >>> 3 <= tst array([False, False, True, True, True, True], dtype=bool) >>> 3 <= tst <= 5 --------------------------------------------------------------------------- ValueError Traceback (most recent call last) /home/ely/<ipython-input-135-ac909818f2b1> in <module>() ----> 1 3 <= tst <= 5 ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() It would be nice to override this so that it "just works" with arrays too, like this: >>> np.logical_and(3 <= tst, ts
Tags (comma-separated)
Save Edits
Cancel