声明一个Python表达式列表而不计算每个表达式

2024-09-24 20:37:14 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我还有一些需要计算的表达式的索引。你知道吗

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

有没有办法避免计算exp\u列表中的所有表达式?你知道吗


Tags: in列表for表达式算术listselected办法
2条回答

假设您决定将表达式存储为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]

如果这些表达式共享某种模式,并且可以“mid air”创建,那么最好使用generator,而不是仅仅创建列表。特别是如果你不需要记住结果,只需要检查其中任何(或全部)结果是真/假。你知道吗

相关问题 更多 >