Python reduce 获取列表中的项目列表

Kum*_*ran 2 python reduce list count

当我研究reduce()Python 中的函数如何工作时,我遇到了这段代码。它打印7,这是预期的输出,并返回 中的项目总数list1,与 的相同len(list1)。我有兴趣知道这段代码是如何工作的。

  1. 0在reduce中做了什么?
  2. 这是否意味着x = list1y = 0?既然如此,为什么返回列表中x + y所有值的总和 ( ) 呢?28
from 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

Dav*_*uck 5

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