当然我得到你使用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
答案 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
希望这会有所帮助。