python的reduce lambda问题

2024-11-30 07:50:00
推荐回答(2个)
回答1:

楼上说的其实不是这个问题,
主要原因是因为其实lambda返回值是一个函数的地址,也就是函数对象
不考虑列表问题,用你的代码举个例子你就明白了:
k=(lambda x,y:x+y)
print(k)
返回的是函数,因为你没有传入参数: at 0x0057D5D0>
print(k(3,4))
返回的才是值,也就是7
reduce(lambda x, y: x+y, list1),这样也是在reduce函数里面传入了列表list1参数,为什么可以传一个列表,因为reduce函数支持计算列表和,这样应该很清楚了吧

回答2:

lambda x,y:x+y 是匿名函数,完全等价于
def add_0随便起一个函数名(x,y):
return x+y
reduce(add_0, list)
说白了lambda就是节约空间装逼用的
reduce() 函数会对参数序列中元素进行累积。
必须用reduce把list所有元素使用这个函数迭代才能实现list求和,懂了吗
注: reduce函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。