压缩两个生成器会产生意想不到的结果。拉链是如何工作的?

问题描述 投票:0回答:1

我有两台发电机,一台取决于另一台的输出。

import asyncio

def do_work(n):
    for i in range(n):
        yield i 


def more_work(x):
    for i in x:
        yield i * 2


def main():
    x = do_work(5)
    y = more_work(x)
    for i, j in zip(x, y):
        print(i, j)


if __name__ == "__main__":
    main()

当我尝试压缩输入时,Python 似乎正在跳过控制变量的一些值:

0 2
2 6

在两个生成器同时产生之前,

zip
是否继续迭代?

python generator
1个回答
0
投票

您是否尝试过将 x 和 y 转换为列表对象? x = 列表(x) y = 列表(y) 在你拉上拉链之前?

© www.soinside.com 2019 - 2024. All rights reserved.