【问题标题】:Python sum() function with list parameter带有列表参数的 Python sum() 函数
【发布时间】:2013-09-14 20:02:13
【问题描述】:

我需要使用sum() 函数来对列表中的值求和。请注意,这与使用 for 循环手动添加数字不同。我以为它会像下面这样简单,但我收到了TypeError: 'int' object is not callable

numbers = [1, 2, 3]
numsum = (sum(numbers))
print(numsum)

我查看了一些其他解决方案,包括设置启动参数、定义地图或在 sum() 中包含 for 语法,但我对这些变化没有任何运气,也无法弄清楚这是怎么回事。有人可以为我提供sum() 的最简单示例,该示例将汇总一个列表,并解释为什么它会以这种方式完成?

【问题讨论】:

  • 嗯。您在解释器中尝试了这 3 行,但没有成功?
  • 是的。如果有帮助,这是使用 Python 3.3.2...
  • 我在其他地方用过 sum。谢谢你 - 我没想到变量会抱怨与函数具有相同的名称。 :)
  • Python 真正的优点之一是函数是一流的对象——它们可以像变量一样被传递。因此,它没有办法不“抱怨”。这也意味着您在技术上可以将sum 函数重命名为其他名称。但是请不要这样做。
  • 我还应该提到,分配给 numsum 只是为了逐步执行代码。它最初被编码为 print(sum(numbers)) 因此 numsum 分配的额外括号。

标签: python list int sum typeerror


【解决方案1】:

您是否在其他任何地方使用过变量sum?这样就可以解释了。

>>> sum = 1
>>> numbers = [1, 2, 3]
>>> numsum = (sum(numbers))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable

名称sum 现在不再指向函数,它指向一个整数。

解决方案:不要将您的变量称为sum,将其称为total 或类似名称。

【讨论】:

  • 刚要发布这个。我认为这是唯一可能的事情。
  • 你也可以提一下,他无论如何都应该避免使用保留字或内置函数名
  • 我的懒惰,因为我预计这将是 10 秒的编码。 把手放在圣经上我再也不会在编码中走捷径了:)
【解决方案2】:
numbers = [1, 2, 3]
numsum = sum(list(numbers))
print(numsum)

如果你想总结一个列表,这会起作用。

【讨论】:

    【解决方案3】:

    在最后一个答案中,您不需要从数字中列出;它已经是一个列表:

    numbers = [1, 2, 3]
    numsum = sum(numbers)
    print(numsum)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      • 2010-10-23
      • 2021-12-24
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多