我有一个排序的对象列表
l = sorted(['/path/to/1.obj', '/path/to/2.obj', '/path/to/3.obj', '/path/to/4.obj'])
我想遍历对象,对它们执行操作,并使用结果执行下一个操作。
例如
result1 = my_operation(l[0], l[1])
result2 = my_operation(result1, l[2])
resultFinal = my_operation(result2, l[3])
如何在任意长度的列表中执行此操作?
这正是reduce的作用:
from functools import reduce
def my_operation(total, value):
return total + value
print(reduce(my_operation, [1,2,3,4]))
您正在寻找的概念是一个循环:
def op(a,b):
return a*b
l = [1, 2, 4, 7, 12, 92]
k = op(*l[:2])
print(k)
for item in l[2:]:
k = op(k, item)
print(k)
输出:
2 # 1 * 2
8 # * 4
56 # * 7
672 # * 12
61824 # * 92
请确保您的列表中至少包含2个元素,并且应该没问题。