擅长:python、mysql、java
<p>从Python 2.4开始,您可以:</p>
<pre><code>gen1 = ((x, y) for x in range(3) for y in range(4))
</code></pre>
<p>请注意,您总是可以使用<code>iter</code>从列表中生成生成器(好吧,迭代器):</p>
^{pr2}$
<p>使用上的区别将是零。第二种方法需要整个列表都在内存中,而第一种方法则不需要。在</p>
<p>注意,您还可以使用<code>zip</code>的内置功能,这是一个生成器(在python3中)。在python2中,使用<code>itertools.izip</code>。在</p>
<p>Python 3:</p>
<pre><code>>>> zip(range(0, 5), range(3, 8))
<zip object at 0x7f07519b3b90>
>>> list(zip(range(0, 5), range(3, 8)))
[(0, 3), (1, 4), (2, 5), (3, 6), (4, 7)]
</code></pre>
<p>Python<;3:</p>
<pre><code># Python < 3
>>> from itertools import izip
>>> izip(range(0, 5), range(3, 8))
<itertools.izip object at 0x7f5247807440>
>>> list(izip(range(0, 5), range(3, 8)))
[(0, 3), (1, 4), (2, 5), (3, 6), (4, 7)]
>>> zip(range(0, 5), range(3, 8))
[(0, 3), (1, 4), (2, 5), (3, 6), (4, 7)]
</code></pre>