首页 > 解决方案 > Python减少以获取列表中的项目列表

问题描述

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

  1. reduce 中有什么作用0
  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) 

输出:7

标签: pythonlistcountreduce

解决方案


reduce 函数有很好的文档记录

正如文档所述:

reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) 

本质上计算((((1+2)+3)+4)+5),其中x是前一个结果(默认为零)并且y是列表中的下一个值。

您的示例中的零充当初始值,因此:

reduce(lambda x, y: x+y, [1, 2, 3, 4, 5], 0) 

计算(((((0+1)+2)+3)+4)+5)

在您的示例中,y未使用,因此

reduce(lambda x, y : x + 1, list1, 0)

相当于(0+1)+1)+1)+1)+1)+1)+1)所以你得到答案7


推荐阅读