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



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

  1. 减少中的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

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

0
  1. 是要传递给提供给reduce()的函数的初始值,在 yout 的情况下 -lambda x, y: x+1

  2. reduce()获取传递给它的列表的第一个和第二个元素,并将它们传递给lambda函数。 然后,reduce()获取此函数的输出,并将其与列表中的第三个元素一起反馈给它。 此过程一直持续到列表中的所有值都通过该函数。

    λ x, y: x+1

只是意味着"取两个数字作为参数(x 和 y(并返回第一个加 1。 由于要传递x的第一个值是 0(它是提供给reduce()的初始值(,lambda只会为列表中的每个元素将其增加 1

相关内容

  • 没有找到相关文章