声明表达式的Python列表而不评估每个表达式

时间:2016-08-23 13:55:08

标签: python list

我有大量的算术表达式存储在列表中。例如

exp_list = [exp1, exp2, ...,exp10000]

我还有一些我需要评估的表达式的索引。

inds = [ind1,ind2,...,ind10]
exp_selected =  [exp_list[i] for i in inds ]

有没有办法避免必须评估exp_list中的所有表达式?

2 个答案:

答案 0 :(得分:1)

假设您决定将表达式存储为lambda(以避免它们被立即评估),那么您可以使用简单的列表理解来选择性地评估它们:

exp_list = [lambda: 1+2, lambda: 3+4, lambda: 5+6, lambda: 7+8]
inds = [1, 3]
print [exp() for i, exp in enumerate(exp_list) if i in inds]

产地:

[7, 15]

答案 1 :(得分:0)

如果这些表达方式共享一些模式,并且可以创建“空中”'最好使用生成器而不是仅创建列表。特别是如果您不需要记住结果,只需检查它们中是否有(或全部)是真/假。