【问题标题】: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)的大小。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多