Python 嵌套惰性列表

Python nested lazy lists

我正在尝试使用 matplotlib 绘制二维图像,它需要嵌套列表格式的数据点。我已经找到了一种非常简洁、惯用的方式来生成它:

zs = [[cost_at(x, y) for x in x_range] for y in y_range]
plt.contourf(x_range, y_range, zs, 1000)

它适用于小数据。但是,我现在需要做完全相同的事情,除了 X 和 Y 的范围太大以至于整个嵌套列表无法放入内存。在我看来,应该可以用惰性列表调用 API ,假设库通过迭代器访问它们,这些惰性列表有望成为足够的替代品。

除了惰性列表之外,还有什么方法可以完成上述操作?

在Python中,可以用生成器表达式创建一个"lazy list":

zs = ((cost_at(x, y) for x in x_range) for y in y_range)

通过使用圆括号而不是方括号,您可以创建一个嵌套的生成器表达式,它一次提供一个 cost_at(x, y) 而不是一次计算它们。