I am trying to understand the working of the built-in sum() function, but, the start parameter has evaporated my mind:
-
a=[[1, 20], [2, 3]] b=[[[[[[1], 2], 3], 4], 5], 6] >>> sum(b,a) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can only concatenate list (not "int") to list >>> sum(a,b) [[[[[[1], 2], 3], 4], 5], 6, 1, 20, 2, 3] -
>>> a=[1,2] >>> b=[3,4] >>> sum(a,b) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can only concatenate list (not "int") to list >>> sum(b,a) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can only concatenate list (not "int") to list
I am just dumbfounded by this and don’t have any idea what is happening. Here is what the python docs have to say: http://docs.python.org/library/functions.html#sum. This does not give any explanation on ‘what if the start is not a string and not an integer?’
Sum does something like this
sum([1,2],[3,4])expands something like[3,4] + 1 + 2, which you can see tries to add numbers and lists together.In order to use
sumto produce lists, the values should be a list of lists, whereas start can be just a list. You’ll see in your failing examples that the list contains at least some ints, rather then all lists.The usual case where you might think of using sum with lists is to convert a list of lists into a list
But really you shouldn’t do that, as it’ll be slow.