我创建了一个生成器列表,如下所示:
x = [1, 2]
axes = []
for axis_max in x:
axis_grid = (i + axis_max for i in [2, 3, 4])
axes.append(axis_grid)
print([list(gen) for gen in axes])
由于某种原因,此代码段的输出如下:
[[4,5,6],[4,5,6]]
虽然我显然认为它应该输出:
[[3,4,5],[4,5,6]]
你能帮我理解它为什么会发生,以及如何解决它?
(编辑)我现在知道它为什么会发生,但仍然不知道如何使用生成器表达式修复它,而不是函数。
显然,我可以通过将生成器转换为列表来修复它,如下所示:
x = [1, 2]
axes = []
for axis_max in x:
axis_grid = (i + axis_max for i in [2, 3, 4])
axes.append(list(axis_grid))
print([list(gen) for gen in axes])
此代码段会返回所需的
[[3,4,5],[4,5,6]]
但这不是我想要的。