【问题标题】:Shortening For Loops缩短 For 循环
【发布时间】:2019-02-27 12:15:00
【问题描述】:
sum_num = 0

for human in humans:
    sum_num += human.limbs
return sum_num

假设对象human 有一个属性limbs,如:

human.limbs = rand.int(0, 4)

像我们使用列表理解一样缩短它的好方法是什么?

sum_num = sum_num + human.limbs for human in humans

显然,上述内容引发了错误。有没有办法像上面那样缩短一些for循环?

【问题讨论】:

  • return sum(human.limbs for human in humans) 见这里:docs.python.org/3/library/functions.html#sum
  • sum 是内置的。在尝试@StephenRauch 建议之前,请确保您没有更换它 - 例如sum = 0
  • 抱歉,将 sum 替换为任何其他临时变量名称。它只是 int 值的占位符。

标签: python python-3.x python-2.7 list list-comprehension


【解决方案1】:

sum 函数是 Python 风格的求和方式。 sum() 接受一个可迭代的。在这种情况下,一个非常有用的迭代是generator expression。生成器表达式使用(基本上)与list comprehensions 相同的语法。使用sum() 和生成器表达式,您尝试执行的操作可以非常简单地表达为:

sum(human.limbs for human in humans)

【讨论】:

    猜你喜欢
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    相关资源
    最近更新 更多