In Python, how do I add all the numbers in a list to get a total?
Python provides a built-in sum
function, which returns the sum of all items in an iterable (such as a list). For example:
numbers = [1, 2, 3, 4, 5] total = sum(numbers) print(total) # Will print 15 (1 + 2 + 3 + 4 + 5)
sum
is an example of a fold (also called reduce), which is a type of higher-order functions that produces a single result from a sequence of items. It does this by applying a function (in this case, addition) to the first two items (1 + 2), getting a result (3) and then applying the same function to that result and the next item (3 + 4). This process continues until the list is consumed, and then the final result is returned.
sum
takes an optional start
parameter, which provides a first value to use in the first addition. For example:
numbers = [1, 2, 3, 4, 5] total = sum(numbers, 6) print(total) # Will print 21 (6 + 1 + 2 + 3 + 4 + 5)
We can write our own folds using the reduce
function from Python’s built-in functools
module. For example, here’s how we might find the product of all numbers in a list:
from functools import reduce numbers = [1, 2, 3, 4, 5] product = reduce(lambda x, y: x * y, numbers) print(product) # Will print 120 (1 * 2 * 3 * 4 * 5)
We supply reduce
with two arguments: a function which takes two arguments and a list. It will then apply this function to the contents of the list in the manner described above, ultimately producing a single result. We’ve used an anonymous lambda function here, but reduce
will also work with a standard function, as below:
from functools import reduce def multiply(x, y): return x * y numbers = [1, 2, 3, 4, 5] product = reduce(multiply, numbers) print(product) # Will print 120 (1 * 2 * 3 * 4 * 5)
reduce
supports an optional initializer
parameter, which works the same as the start
parameter in sum
.
from functools import reduce numbers = [1, 2, 3, 4, 5] product = reduce(lambda x, y: x * y, numbers, 6) print(product) # Will print 720 (6 * 1 * 2 * 3 * 4 * 5)
Get actionable, code-level insights to resolve Python performance bottlenecks and errors.
Create a free Sentry account
Create a Python project and note your DSN
Grab the Sentry Python SDK
pip install --upgrade sentry-sdk
import sentry_sdk sentry_sdk.init( "https://<key>@sentry.io/<project>", # Set traces_sample_rate to 1.0 to capture 100% # of transactions for performance monitoring. # We recommend adjusting this value in production. traces_sample_rate=1.0, )
Loved by over 4 million developers and more than 90,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.