python - 求和函数如何在带有for循环的python中工作

标签 python python-3.x sum generator iterable

<分区>

我在 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/

相关文章:

python - 使用 while 循环代替 for 循环

python - 我可以为 numpy 预先计算/预先生成伪随机数吗?

C# 对象列表,如何获取属性的总和

mysql - mysql查询中组计数的累计和

Python Canvas 和 Grid Tkinter

python - 将 Django 站点从 http 升级到 https 后,我不断收到 `Invalid HTTP_HOST header` 错误电子邮件

Python/Pandas 从 csv 创建 zip 文件

python - 检测图像中对象的宽度

python - 在 Pandas 数据框中显示对图

java - 有趣的 16x16 网格总和