簡體   English   中英

為什么生成器上的zip只返回一個項目?

[英]Why does zip on a generator return just one item?

我在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)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM