擅长:python、mysql、java
<p>让我们定义回答问题所需的函数,并对其计时:</p>
<pre><code>In [18]: def iter():
l = [x for x in range(100) if x > 10]
....:
In [19]: %timeit iter()
100000 loops, best of 3: 7.92 µs per loop
In [20]: def loop():
l = []
for x in range(100):
if x > 10:
l.append(x)
....:
In [21]: %timeit loop()
10000 loops, best of 3: 20 µs per loop
In [22]: def loop_fast():
l = []
for x in range(100):
if x > 10:
pass
....:
In [23]: %timeit loop_fast()
100000 loops, best of 3: 4.69 µs per loop
</code></pre>
<p>我们可以看到,没有append命令的for循环与list理解一样快。实际上,如果我们看一下字节码,我们可以看到,在列表理解的情况下,python可以使用一个名为list_APPEND的内置字节码命令,而不是:</p>
<ul>
<li>加载列表:40加载快速</li>
<li>加载属性u43</li>
<li>调用加载函数:49 Call_函数</li>
<li>卸载列表(?):52流行上衣</li>
</ul>
<p>从下面的输出中可以看到,前面的字节码在列表理解和“循环快速”函数中丢失。比较这三种方法的时间,可以清楚地看出,这三种方法的计时不同。在</p>
^{pr2}$