Kum*_*ran 2 python reduce list count
当我研究reduce()Python 中的函数如何工作时,我遇到了这段代码。它打印7,这是预期的输出,并返回 中的项目总数list1,与 的相同len(list1)。我有兴趣知道这段代码是如何工作的。
0在reduce中做了什么?x = list1和y = 0?既然如此,为什么返回列表中x + y所有值的总和 ( ) 呢?28from functools import reduce
list1 = [1 ,2, 3, 4, 5, 6, 7]
count = reduce(lambda x, y : x + 1, list1, 0)
print(count)
Run Code Online (Sandbox Code Playgroud)
输出:7
reduce 函数有很好的文档记录
正如文档所述:
reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])
Run Code Online (Sandbox Code Playgroud)
本质上计算((((1+2)+3)+4)+5),其中x是上一个结果(默认为零),y是列表中的下一个值。
您的示例中的零充当初始值,因此:
reduce(lambda x, y: x+y, [1, 2, 3, 4, 5], 0)
Run Code Online (Sandbox Code Playgroud)
计算(((((0+1)+2)+3)+4)+5)
在你的例子中,y没有使用,所以
reduce(lambda x, y : x + 1, list1, 0)
Run Code Online (Sandbox Code Playgroud)
相当于这样(0+1)+1)+1)+1)+1)+1)+1)你就得到了答案7