我在pyhton中使用sum函数,并且很清楚它的一般结构 sum(iterable,start),但是我无法理解下面代码的逻辑
test = sum(5 for i in range(5) )
print("output: ", test)
输出:25
请任何人描述这里发生的事情,基本上这里是5与5的乘积,并且每个样本输入都有相同的模式。
答案 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。