为了避免使用中间介质,想要用这个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没有可迭代的