我尝试在Python中运行此代码,希望得到[(1,123),(2,123)]的结果:
Python 2.7.3 (default, Feb 27 2014, 19:58:35)
>>> def my_generator():
... yield 123
...
>>> zip([1,2], my_generator())
[(1, 123)]
为什么zip只创建了一个项目就停止了?有没有一种Pythonic的方法可以得到我想要的结果?
我尝试在Python中运行此代码,希望得到[(1,123),(2,123)]的结果:
Python 2.7.3 (default, Feb 27 2014, 19:58:35)
>>> def my_generator():
... yield 123
...
>>> zip([1,2], my_generator())
[(1, 123)]
为什么zip只创建了一个项目就停止了?有没有一种Pythonic的方法可以得到我想要的结果?
def my_generator():
while True:
yield 123
print zip([1,2], my_generator())
# [(1, 123), (2, 123)]
itertools.repeat
,像这样:from itertools import repeat
print zip([1,2], repeat(123))
# [(1, 123), (2, 123)]
while True:
形式,这更符合 Python 的风格。 - rafgoncalves
zip
函数。 - BrenBarn