给定一个列表[a, b, c, d]
我想调用一个函数foo()
,它返回一个数字并乘以返回值:
result = foo(a, b) * foo(b, c) * foo(c, d)
这对于pythonic单线程是什么?我内心的C-Programmer会开始摆弄索引和for循环,但我知道必须有更好的方法..
答案 0 :(得分:5)
这里有一个功能性的方法:
import operator
from functools import reduce #only python3
result = reduce(operator.mul, map(foo, l, l[1:]))
为了在python2中获得更好的性能,可以将itertools
函数改进为imap