为什么生成器列表会更改生成器?

时间:2018-01-19 14:57:15

标签: python python-3.x generator

我创建了一个生成器列表,如下所示:

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]]

但这不是我想要的。

0 个答案:

没有答案