對於Python 2.4,你可以這樣做:
gen1 = ((x, y) for x in range(3) for y in range(4))
注意,你總是可以從列表發電機(當然,迭代器)與iter
:
gen1 = iter([(x, y) for x in range(3) for y in range(4)])
中使用的差別將沒有。第二種方式將需要整個列表在內存中,雖然第一種方法不會。
請注意,您也可以使用zip
的內置功能,它是一個生成器(在Python 3中)。在Python 2中,使用itertools.izip
。
的Python 3:
>>> 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)]
的Python < 3:
# 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)]
爲什麼你不能使用'zip'?這似乎是一個完美的解決方案。 –