<p>使用简单的<code>for</code>比<code>list comprehesion</code>快。它几乎快了2倍。检查以下结果:</p>
<p>使用<code>list comprehension</code>:<em>58 usec</em></p>
<pre><code>moin@moin-pc:~$ python -m timeit "[i for i in range(1000)]"
10000 loops, best of 3: 58 usec per loop
</code></pre>
<p>使用<code>for</code>循环:<em>37.1 usec</em></p>
^{pr2}$
<p><strong>但是在您的例子中,<code>for</code>比列表理解要花更多的时间,不是因为for循环太慢。但由于<code>.append()</code>您正在代码中使用。</strong></p>
<p>在<code>for</code>循环中使用<code>append()</code>时:<em>114 usec</em></p>
<pre><code>moin@moin-pc:~$ python -m timeit "my_list = []" "for i in range(1000): my_list.append(i)"
10000 loops, best of 3: 114 usec per loop
</code></pre>
<p>这清楚地表明,<strong><code>.append()</code>所花费的时间是<code>for</code>循环所花时间的两倍。在</p>
<p>然而,在<code>storing the "list.append" in different variable</code>:<em>69.3使用c</em></p>
<pre><code>moin@moin-pc:~$ python -m timeit "my_list = []; append = my_list.append" "for i in range(1000): append(i)"
10000 loops, best of 3: 69.3 usec per loop
</code></pre>
<p>与上述最后一个例子相比,性能有了很大的提高,并且结果与<code>list comprehension</code>的相当。这意味着,与每次调用<code>my_list.append()</code>不同的是,可以通过将函数的引用存储在另一个变量(即<code>append_func = my_list.append</code>)中并使用该变量<code>append_func(i)</code>进行调用来提高性能。在</p>
<p>这也证明,<strong>调用存储在变量中的类的函数比直接使用类的对象进行函数调用要快。在</p>
<p>感谢你提醒最后一个案子。</em></p>