我在python中使用sum函数,我很清楚它的一般结构sum(可迭代,开始),但我无法理解以下代码背后的逻辑
test = sum(5 for i in range(5) )
print("output: ", test)
输出:25
请任何人都可以描述一下这里发生了什么,基本上这里 5 乘以 5,并且每个样本输入都有相同的模式。
您的代码是以下内容的简写:
test = sum((5 for i in range(5)))
删除多余的括号是语法糖:它对您的算法没有影响。
The (5 for i in range(5))
组件是一个生成器表达式 https://www.python.org/dev/peps/pep-0289/每次迭代都会产生值 5。生成器表达式总共有 5 次迭代,定义如下range(5)
。因此,生成器表达式产生 5 正好 5 次。
sum https://docs.python.org/3/library/functions.html#sum正如文档所示,接受任何iterable, 即使是那些not完全保留在记忆中。生成器以及扩展的生成器表达式具有内存效率。因此,您的逻辑将 5 相加恰好 5 次,等于 25。
当您不在闭环中使用变量时,惯例是用下划线表示该变量(_
),所以通常你会看到你的代码写成:
test = sum(5 for _ in range(5))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)