<p>让我们不要假设,而是运行一些测试!在</p>
<p>设置:</p>
<pre><code>>>> import time
>>> def timeit(l1, l2, n):
start = time.time()
for i in xrange(n):
l1 == l2
end = time.time()
print "%d took %.2fs" % (n, end - start)
</code></pre>
<p>两个巨大的平等名单:</p>
^{pr2}$
<p>第一个元素不相等的两个巨大列表:</p>
<pre><code>>>> easydiff1 = [10]*30000
>>> easydiff2 = [10]*30000
>>> easydiff2[0] = 0
>>> timeit(easydiff1, easydiff2, 10000)
10000 took 0.00s
>>> timeit(easydiff1, easydiff2, 1000000)
1000000 took 0.14s
</code></pre>
<p>因此,似乎内置的列表相等运算符确实做了短路。在</p>
<p>编辑:有趣的是,使用<code>array.array</code>模块并没有使它更快:</p>
<pre><code>>>> import array
>>> timeit(hugeequal1, hugeequal2, 1000)
1000 took 0.30s
>>> timeit(array.array('l', hugeequal1), array.array('l', hugeequal2), 1000)
1000 took 1.11s
</code></pre>
<p><code>numpy</code>确实能给你带来很好的加速效果,不过:</p>
<pre><code>>>> import numpy
>>> timeit(hugeequal1, hugeequal2, 10000)
10000 took 3.01s
>>> timeit(numpy.array(hugeequal1), numpy.array(hugeequal2), 10000)
10000 took 1.11s
</code></pre>