sum函数如何在带有for循环的python中工作

时间:2018-12-31 02:57:40

标签: python python-3.x sum generator iterable

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

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

输出:25

请任何人描述这里发生的事情,基本上这里是5与5的乘积,并且每个样本输入都有相同的模式。

3 个答案:

答案 0 :(得分:2)

您的代码是以下简称:

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

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

(5 for i in range(5))组件是一个generator expression,它在每次迭代时都会产生值5。根据range(5)的定义,生成器表达式总共有5次迭代。因此,生成器表达式的准确率是5的5倍。

正如文档所示,

sum接受任何 iterable ,甚至包括那些完全保留在内存中的 not 。生成器以及扩展生成器表达式可以提高内存效率。因此,您的逻辑将精确地相加5次5次,即25次。

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

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

答案 1 :(得分:0)

您可以将列表添加到sum函数中,以便进行如下操作:

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

您将得到135

因此,通过“ for循环”,您将获得一个列表,并将该列表放入sum函数中,即可获得列表的总和。真正的sum函数使用收益率洞察力并使用每个值并将其求和。

答案 2 :(得分:0)

基本上,它是对range(5)上的每个“ i”重复累加5。意思是,此代码等效于n * 5,等于range(n)的n。