Python嵌套生成器无法正常工作

Nis*_*sba 3 python generator

我正在练习发电机,我想知道为什么以下代码不打印16对但只有4对.

def range_generator_function(my_range):
    for i in my_range:
        yield i

gen1=range_generator_function(range(1,5))
gen2=range_generator_function(range(1,5))

def pairs_generator_function(gen1,gen2):
    for it1 in gen1:
        for it2 in gen2:
            yield [it1,it2]

my_gen = pairs_generator_function(gen1,gen2)

for it in my_gen:
    print(it)
Run Code Online (Sandbox Code Playgroud)

输出是

[1, 1]
[1, 2]
[1, 3]
[1, 4]
Run Code Online (Sandbox Code Playgroud)

虽然我期望的输出是

[1, 1]
[1, 2]
[1, 3]
[1, 4]
[2, 1]
[2, 2]
[2, 3]
[2, 4]
[3, 1]
[3, 2]
[3, 3]
[3, 4]
[4, 1]
[4, 2]
[4, 3]
[4, 4]
Run Code Online (Sandbox Code Playgroud)

wim*_*wim 5

实际输出是正确的.您的gen2实例在第一个内部循环中完全耗尽:

def pairs_generator_function(gen1,gen2):
    for it1 in gen1:
        for it2 in gen2:  # <--- this consumes gen2
            yield [it1,it2]
Run Code Online (Sandbox Code Playgroud)

在随后的迭代中,gen2再次迭代为空.