求和函数如何在 python 中与 for 循环一起工作

How does sum function work in python with for loop

我在 python 中使用了 sum 函数,我很清楚它的一般结构 sum(iterable, start) ,但我无法理解逻辑后面代码

test = sum(5 for i in range(5) )
print("output:  ", test) 

输出:25

谁能描述一下这里发生了什么,基本上这里 5 乘以 5,每个样本输入都有相同的模式。

您可以在 sum 函数中添加一个列表,这样您就可以制作如下内容:

test = sum((1,23,5,6,100))
print("output:  ", test) 

你得到 135

因此,使用 "for loop" 可以得到一个列表并将该列表放入 sum 函数,然后得到列表的总和。真正的 sum 函数使用 yield insight 并使用每个值并将它们相加。

您的代码是 shorthand 用于:

test = sum((5 for i in range(5)))

删除额外的括号是语法糖:它对您的算法没有影响。

(5 for i in range(5)) 组件是一个 generator expression,它在每次迭代中产生值 5。您的生成器表达式总共有 5 次迭代,如 range(5) 所定义。因此,生成器表达式恰好产生 5 次 5 次。

sum,如文档所示,接受任何 iterable,甚至那些 not 完全保存在内存中。生成器以及扩展生成器表达式具有内存效率。因此,您的逻辑会将 5 恰好相加 5 次,等于 25。

当您不在闭环中使用变量时的约定是用下划线 (_) 表示该变量,因此通常您会看到您的代码写成:

test = sum(5 for _ in range(5))

基本上,它对范围 (5) 上的每个 "i" 重复求和 5。意思是,这段代码相当于 n*5,n 是 range(n) 的大小。