擅长:python、mysql、java
<p>如果需要列表,只需在生成器对象上调用list()。</p>
<p>python中的生成器对象类似于惰性列表。元素只有在迭代之后才被计算。(因此上面的调用列表会计算所有这些值。)</p>
<p>例如,您可以执行以下操作:</p>
<pre><code>>>> def f(x):
... print "yay!"
... return 2 * x
>>> g = (f(i) for i in xrange(3)) # generator comprehension syntax
>>> g
<generator object <genexpr> at 0x37b6c0>
>>> for j in g: print j
...
yay!
0
yay!
2
yay!
4
</code></pre>
<p>只在迭代f时查看如何计算f。你可以在这里找到关于这个主题的优秀材料:<a href="http://www.dabeaz.com/generators/" rel="noreferrer">http://www.dabeaz.com/generators/</a></p>