如何为列表中的每个邻居调用一个函数?

时间:2017-05-21 09:21:00

标签: python list generator

给定一个列表[a, b, c, d]我想调用一个函数foo(),它返回一个数字并乘以返回值:

result = foo(a, b) * foo(b, c) * foo(c, d)

这对于pythonic单线程是什么?我内心的C-Programmer会开始摆弄索引和for循环,但我知道必须有更好的方法..

1 个答案:

答案 0 :(得分:5)

这里有一个功能性的方法:

import operator
from functools import reduce #only python3
result = reduce(operator.mul, map(foo, l, l[1:]))

为了在python2中获得更好的性能,可以将itertools函数改进为imap