【问题标题】:How does sum function work in python with for loopsum函数如何在python中使用for循环
【发布时间】:2019-05-27 17:34:43
【问题描述】:
我在 python 中使用 sum 函数,我很清楚它的一般结构 sum(iterable, start) ,但我无法获得以下代码背后的逻辑
test = sum(5 for i in range(5) )
print("output: ", test)
输出:25
请任何人描述这里发生的事情,基本上这里 5 乘以 5,并且每个样本输入都有相同的模式。
【问题讨论】:
标签:
python
python-3.x
sum
generator
iterable
【解决方案1】:
您可以向sum 函数添加一个列表,这样您就可以进行如下操作:
test = sum((1,23,5,6,100))
print("output: ", test)
你会得到135。
因此,通过您的“for 循环”,您将获得一个列表并将该列表放入 sum 函数,然后您将获得列表的总和。真正的sum 函数使用yield 洞察力并使用每个值并总结它们。
【解决方案2】:
您的代码是:
test = sum((5 for i in range(5)))
删除多余的括号是语法糖:它对您的算法没有影响。
(5 for i in range(5)) 组件是一个 generator expression,在每次迭代中,它的值都是 5。您的生成器表达式总共有 5 次迭代,如 range(5) 所定义。因此,生成器表达式产生 5 正好 5 次。
sum,如文档所示,接受任何iterable,即使是那些不完全保存在内存中的。生成器,以及扩展生成器表达式,具有内存效率。因此,您的逻辑将 5 恰好相加 5 次,即 25。
当您在闭环中不使用变量时,惯例是用下划线 (_) 表示该变量,因此通常您会看到您的代码编写为:
test = sum(5 for _ in range(5))
【解决方案3】:
基本上,它对 range(5) 上的每个“i”重复地求和 5。意思是,这段代码相当于n*5,n是range(n)的大小。