Python嵌套的惰性列表

时间:2017-12-19 20:42:30

标签: python matplotlib generator iterable lazy-sequences

我试图使用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,希望它们是足够的替代品,假设库通过迭代器访问它们。

除了懒惰列表之外,上面的方法是什么?

1 个答案:

答案 0 :(得分:2)

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

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

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