我有大量的算术表达式存储在列表中。例如
exp_list = [exp1, exp2, ...,exp10000]
我还有一些我需要评估的表达式的索引。
inds = [ind1,ind2,...,ind10]
exp_selected = [exp_list[i] for i in inds ]
有没有办法避免必须评估exp_list中的所有表达式?
答案 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)
如果这些表达方式共享一些模式,并且可以创建“空中”'最好使用生成器而不是仅创建列表。特别是如果您不需要记住结果,只需检查它们中是否有(或全部)是真/假。