Python sum() function with list parameter

2019-02-08 06:20发布

问题:

I am required to use the sum() function in order to sum the values in a list. Please note that this is DISTINCT from using a 'for' loop to add the numbers manually. I thought it would be something simple like the following, but I receive 'TypeError: 'int' object is not callable'.

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

I looked at a few other solutions that involved setting the start parameter, defining a map, or including 'for' syntax within sum(), but I haven't had any luck with these variations, and can't figure out what's going on. Could someone provide me with the simplest possible example of sum() that will sum a list, and provide an explanation for why it is done the way it is?

回答1:

Have you used the variable sum anywhere else? That would explain it.

>>> 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

The name sum doesn't point to the function anymore now, it points to an integer.

Solution: Don't call your variable sum, call it total or something similar.



回答2:

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

This would work, if your are trying to Sum up a list.



回答3:

In the last answer, you don't need to make a list from numbers; it is already a list:

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