<分区>
我在 python 中使用 sum 函数,我很清楚它的一般结构 sum(iterable, start) ,但我无法理解以下代码背后的逻辑
test = sum(5 for i in range(5) )
print("output: ", test)
输出:25
谁能描述这里发生的事情,基本上这里 5 乘以 5,并且每个样本输入都有相同的模式。
<分区>
我在 python 中使用 sum 函数,我很清楚它的一般结构 sum(iterable, start) ,但我无法理解以下代码背后的逻辑
test = sum(5 for i in range(5) )
print("output: ", test)
输出:25
谁能描述这里发生的事情,基本上这里 5 乘以 5,并且每个样本输入都有相同的模式。
最佳答案
您的代码是以下内容的简写:
test = sum((5 for i in range(5)))
删除额外的括号是语法糖:它对您的算法没有影响。
(5 for i in range(5))
组件是一个 generator expression在每次迭代中,它产生值 5。您的生成器表达式总共有 5 次迭代,如 range(5)
所定义。因此,生成器表达式恰好产生 5 次 5 次。
sum
,如文档所示,接受任何可迭代,即使那些不完全保存在内存中。生成器以及扩展生成器表达式具有内存效率。因此,您的逻辑会将 5 加起来恰好 5 次,等于 25。
当您不在闭环中使用变量时,约定是用下划线 (_
) 表示该变量,因此通常您会看到您的代码写成:
test = sum(5 for _ in range(5))
关于python - 求和函数如何在带有for循环的python中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53983152/