python - Python减少以获取列表中的项目列表
问题描述
我在研究reduce()
Python 中的函数如何工作时遇到了这段代码。它打印7
,这是预期的输出,并返回来自 的项目总数list1
,与 的相同len(list1)
。我很想知道这段代码是如何工作的。
- reduce 中有什么作用
0
? - 这是否意味着
x = list1
和y = 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
推荐阅读
- tags - rpi 项目的 device_model.json 身份验证
- python - 如何使用 OCR 直接在网页上扫描图像?
- spring-boot - 如何将 Spring Boot Config Server Client 连接到在两个不同端口上运行的 Config 服务器?
- xamarin.forms - Xamarin Forms - iOS 编辑器底部边框线
- google-data-studio - 启用基于层次结构的 Google 数据工作室视图
- php - 如何使用 wordpress 上的类别获得与我当前产品相似的产品
- nuxt.js - NuxtJS auth 在注销后重定向到各种路径,如果需要的话
- python - Telnet 设备自动化
- node.js - inotify@1.4.1 不支持的平台:想要 {“os”:“linux”,“arch”:“any”}
- snakemake - snakemake - define input for aggregate rule without wildcards