# Python Sum Example

Use the sum method on a list of integers. Understand when TypeError is caused by sum.**Sum.** A list contains the numbers 10, 20 and 5: its sum is 35. We can a for-loop to iterate and add up the element values. Or we can use a simpler built-in method.

**Two arguments.** The sum() built-in receives 2 arguments. The first is an iterable collection like list—these elements are summed. The second argument is added to the sum.

**An example.** Here we introduce a list with 3 integers in it. We sum those integers with the sum() built-in method. And then we use sum with 2 arguments.

**Argument 1:** An iterable like a list we want to sum. The list must have summable elements like integers, not sub lists.

**Argument 2:** A value that is added to the sum of the iterable's elements. We can use this argument to sum previous sums.

**Python program that uses sum, 2 arguments**
values = [*1*, *1*, *2*]*
# The sum of the 3 values is this number.
*result = __sum__(values)
print(result)*
# Use sum with 2 arguments.
# ... The second argument is added to the element sum.
*result = __sum__(values, *1000*)
print(result)
**Output**
4
1004

**Error in summing.** We cannot sum nested iterables. Instead sum() only counts up top-level elements in our list. A nested list leads to a TypeError.

List, strings**Python program that uses sum, nested list error**
*# This list has a nested list element.
# ... It cannot be summed with sum.
*values = [10, [20, 30]]*
# This will cause a TypeError.
*result = __sum__(values)
print(result)
**Output**
Traceback (most recent call last):
File "C:\programs\file.py", line 9, in <module>
result = sum(values)
TypeError: unsupported operand type(s) for +: 'int' and 'list'

**Fsum example.** The sum() built-in will work with float numbers like 1.5. But it may return a less-accurate result than the math.fsum specialty method.

Math: fsum**A review.** Why use sum? Why not just loop over elements and add them up? In some programs, sum() leads to simpler, more maintainable code, and this causes fewer bugs.

**© 2007-2020 sam allen. send bug reports to info@dotnetperls.com.**