Python嵌套的惰性列表

问题描述 投票:0回答:1

我正在尝试使用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 matplotlib generator iterable lazy-sequences
1个回答
2
投票

在Python中,可以使用生成器表达式创建“惰性列表”:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.