求和函数如何在 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) 的大小。
我在 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) 的大小。