python双重循环中使用yield

为了避免使用中间介质,想要用这个yield.
这是一个难倒无数大佬的问题!!!
双重循环中使用yield
请教n多大佬,最终经过两天时间,终于有个大佬给想出来了。

c = 0
def generator():
    global c
    while 1:
        c += 1
        yield c

def get_num():
    gen = generator()
    for i in range(9):
        yield next(gen)

def main():
    for i in range(5):
        for j in get_num():
            print(j)

if __name__ == '__main__':
    main()

最终成功打印1…45

外面的循环通过next迭代,遇到yield返回, ,下次next继续while循环,如果不加while,下次由于上次generator()已经执行完毕不会再继续执行产生迭代器,所以next没有可迭代的

你可能感兴趣的:(python)