Python:我不明白sum()的完整用法

时间:2013-07-15 23:50:43

标签: python

当然我得到你使用sum()和几个数字,然后它总结了所有,但我正在查看它上面的文档,我发现了这个:

sum(iterable[, start])

第二个论点“[,开始]”是什么?这是如此令人尴尬,但我似乎无法找到谷歌的任何例子,对于试图学习该语言的人来说,文档相当神秘。

它是某种列表吗?我无法让它发挥作用。以下是我尝试之一的示例:

>>> sum(13,4,5,6,[2,4,6])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sum expected at most 2 arguments, got 5

2 个答案:

答案 0 :(得分:10)

开头表示总和的起始值,您可以将其等同于:

sum(iterable, start)

用这个:

start + sum(iterable)

你的错误的原因是你没有将数字封装成一个可迭代的总和,而是这样做:

sum([13, 4, 5, 6])

这将产生28(13 + 4 + 5 + 6)的值。如果你这样做:

sum([13, 4, 5, 6], 25)

取而代之的是53(13 + 4 + 5 + 6 + 25)。

答案 1 :(得分:1)

另外,请记住,如果你创建一个嵌套列表(就像你上面的那样)sum会给你一个错误(试图将一个整数添加到列表中,不清楚 - 你试图追加或将它添加到列表的总和或什么?)。因此,尝试使用两个列表,+会重载,并且通常会将两个列表连接成一个,但总和会尝试添加内容,因此不清楚您要问的是什么。

通过示例更容易解释:

>>> mylist = [13, 4, 5, 6, [2,4,6]]
>>> sum(mylist)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'list'
>>> a = [13, 4, 5, 6]
>>> b = [2,4,6]
>>> c = [a,b]
>>> c
[[13, 4, 5, 6], [2, 4, 6]]
>>> sum(c)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'list'
>>> c = a+b
>>> c
[13, 4, 5, 6, 2, 4, 6]
>>> sum(c)
40
>>> sum(c, 23)
63

希望这会有所帮助。