我在一个mooc中必须编写一个函数,该函数返回输入列表的累积和,累积乘积,最大值和最小值。
这部分课程是关于函数式编程的,所以我想全力以赴,即使我可以使用其他方法。
所以,我想这一点:函数列表和参数的映射:开箱难度
from operator import mul
from itertools import repeat
from functools import reduce
def reduce2(l):
print(l)
return reduce(*l)
def numbers(l):
return tuple(map(reduce2, zip([sum, mul,min, max], repeat(l,4))))
l=[1,2,3,4,5]
numbers(l)
我的问题是,这是行不通的。如果我在map中使用它,zip将只传递一个对象,解压缩zip会生成(函数和参数列表l)的4元组,所以我为此定义了reduce2,我想将zip解压到它内部,但它不工作。
Python返回一个TypeError:int'对象不可迭代
我认为我可以在reduce2中使用return reduce(l [0],l [1]),但仍然有相同的错误。
我不明白python的行为。 如果我仅仅使用return reduce(l),它会再次返回一个TypeError:至少减少2个参数,得到1
这里发生了什么?我怎么能使它工作? 感谢您的帮助。
非常感谢关于命名约定的精确性。我没有意识到这一点。做得很好,实际上总和与减少是多余的,现在我明白了。 –