我有一些代码,其中我得到了一组二进制函数和一组值,我需要像这样链接调用:
funs = [..]
vals = [..]
result = funs[0](vals[0],
funs[1](vals[1],
..
funs[-1](vals[-2], vals[-1])))))..)
举个简单的例子,如果:
funs = [operator.add, operator.mul]
vals = [1, 2, 3]
那么result
应该评估为add(1, mul(2, 3))
,以得到7。我可以编写一个 for
循环来评估每个中间结果,这既简单又难以令人满意:
result = vals[-1]
for val, fun in reversed(zip(vals[:-1], funs)):
result = fun(val, result)
什么是Pythonic的方式?还是现在这样就可以了?
for val, fun in reversed(zip(vals[:-1], ops)):
应该改为for val, fun in reversed(zip(vals[:-1], funs)):
。 - zehnpaard