<p><code>a < b < c</code>是Python中的一个<a href="https://docs.python.org/2.7/reference/expressions.html#comparisons" rel="noreferrer">chained expression</a>,它看起来像是在定义了适当的比较运算符的对象上工作,但它不适用于numpy数组。为什么?在</p>
<pre><code>import numpy as np
class ContrarianContainer(object):
def __init__(self, x):
self.x = x
def __le__(self, y):
return not self.x <= y
def __lt__(self, y):
return not self.x < y
def __ge__(self, y):
return not self.x >= y
def __gt__(self, y):
return not self.x > y
def __eq__(self, y):
return not self.x == y
def __ne__(self, y):
return not self.x != y
numlist = np.array([1,2,3,4])
for n in numlist:
print 0 < n < 3.5
for n in numlist:
print 0 > ContrarianContainer(n) > 3.5
print 0 < numlist < 3.5
</code></pre>
<p>打印:</p>
^{pr2}$