PYTHON

Python reduce(): Syntax, Usage, and Examples

In Python, the reduce() function allows you to apply a function to a sequence and reduce it to a single cumulative value. Whether you're summing numbers, combining strings, or processing nested data, reduce() gives you a powerful, functional approach to work through a list step by step. It's part of the functools module, so you'll need to import it before using it.

You can think of reduce() as a tool that repeatedly applies a function to elements of a list, reducing the list one element at a time until only a single result remains. The Python reduce function is especially useful when you're performing chained operations or working with accumulations.

How to Use reduce() in Python

To use reduce(), you import it from the functools module. Here's the syntax:

from functools import reduce

reduce(function, iterable[, initializer])
  • function: A function that takes two arguments. It’s applied cumulatively to the items of the iterable.
  • iterable: A sequence like a list, tuple, or set.
  • initializer (optional): A value that is placed before the items in the sequence, acting as a starting point.

Basic Example

from functools import reduce

numbers = [1, 2, 3, 4]
total = reduce(lambda x, y: x + y, numbers)
print(total)  # Output: 10

Here, reduce() applies the lambda function to 1 + 2, then 3, then 4, resulting in a total of 10.

When to Use reduce() in Python

You should use reduce() when:

  • You want to compute a single value from a list or sequence.
  • Each step depends on the result of the previous one.
  • You're chaining operations such as summing, multiplying, or merging values.
  • You want a concise, functional alternative to traditional loops.

If you find yourself writing a loop to accumulate a result, it might be a case where reduce() can simplify your code.

Practical Examples of Python Reduce

Multiply All Elements in a List

from functools import reduce

nums = [1, 2, 3, 4]
product = reduce(lambda x, y: x * y, nums)
print(product)  # Output: 24

This is helpful when calculating factorials or other cumulative operations.

Reduce Python Strings into a Single Sentence

words = ["Python", "is", "fun"]
sentence = reduce(lambda x, y: f"{x} {y}", words)
print(sentence)  # Output: "Python is fun"

You can use this to build sentences or merge data from a list.

Use an Initializer with Reduce

values = [10, 20, 30]
result = reduce(lambda x, y: x + y, values, 5)
print(result)  # Output: 65

By setting an initializer of 5, the function starts at 5 + 10, then continues with the rest.

Reduce a List of Lists into a Single List

lists = [[1, 2], [3, 4], [5]]
flattened = reduce(lambda x, y: x + y, lists)
print(flattened)  # Output: [1, 2, 3, 4, 5]

This works like a simple form of list flattening.

Learn More About reduce() in Python

How reduce() Works Behind the Scenes

Think of it like this:

reduce(func, [a, b, c, d])
# becomes
func(func(func(a, b), c), d)

Each result is passed to the next function call as the first argument.

reduce() vs Loops

Both achieve the same goal, but reduce() focuses on declarative code. Instead of writing:

total = 0
for num in nums:
    total += num

You do it in one line:

reduce(lambda x, y: x + y, nums)

Use reduce() when you want compact, functional-style code.

Use reduce() with Named Functions

def add(x, y):
    return x + y

numbers = [5, 10, 15]
result = reduce(add, numbers)
print(result)  # Output: 30

This improves readability and allows reuse.

Python Reduce List of Dictionaries

items = [{"count": 2}, {"count": 3}, {"count": 5}]
total = reduce(lambda acc, x: acc + x["count"], items, 0)
print(total)  # Output: 10

You can extract and sum fields from a list of dictionaries in a single expression.

Combining with map() and filter()

nums = [1, 2, 3, 4, 5]

# Double the even numbers and reduce to a total sum
from functools import reduce

result = reduce(
    lambda x, y: x + y,
    map(lambda x: x * 2, filter(lambda x: x % 2 == 0, nums))
)
print(result)  # Output: 12

This is where reduce() shines—chaining transformations functionally.

Real-World Use Cases for Python Reduce

Text Analysis

sentences = ["Python", "rocks", "every", "developer"]
joined = reduce(lambda x, y: x + " " + y, sentences)

Quickly combine or clean up text from logs or input fields.

Shopping Cart Total

cart = [{"price": 19.99}, {"price": 5.50}, {"price": 3.49}]
total_price = reduce(lambda x, y: x + y["price"], cart, 0)
print(round(total_price, 2))  # Output: 28.98

This is a classic example where reduce() simplifies accumulation.

String Normalization

chunks = ["   Hello", "World ", "   from Python  "]
cleaned = reduce(lambda a, b: f"{a.strip()} {b.strip()}", chunks)
print(cleaned)  # Output: "Hello World from Python"

You can clean, trim, and join user input in a single expression.

Tips for Using reduce() Effectively

  • Import it from functools. It’s not a built-in function like map() or filter().
  • Avoid overly complex lambda functions. If the logic grows, define a separate function.
  • Use reduce() only when you truly need to reduce a list to a single value. Otherwise, sum(), list comprehensions, or loops may be more readable.

Related Concepts

reduce() vs sum() vs join()

  • Use sum() for adding numbers: sum([1, 2, 3]) is clearer than using reduce().
  • Use ' '.join() for combining strings: reduce() is flexible but verbose for this case.
  • Use reduce() when you're applying a custom operation like multiplication, merging dictionaries, or accumulating nested values.

Map Reduce Pattern in Python

If you've heard of map-reduce, Python has both pieces:

  • map() transforms data
  • filter() removes unwanted data
  • reduce() accumulates the final result

Together, they help you write cleaner, data-focused code.

The Python reduce function is a powerful tool for turning a list or sequence into a single result. Whether you're calculating totals, merging data, flattening structures, or building custom accumulations, reduce() gives you a clear and functional way to express the logic.

Once you understand how it works, you can simplify many tasks that would otherwise require longer loops or manual tracking. Use reduce() wisely, and you'll make your Python code cleaner, shorter, and more expressive.

Learn to Code in Python for Free
Start learning now
button icon
To advance beyond this tutorial and learn Python by doing, try the interactive experience of Mimo. Whether you're starting from scratch or brushing up your coding skills, Mimo helps you take your coding journey above and beyond.

Sign up or download Mimo from the App Store or Google Play to enhance your programming skills and prepare for a career in tech.

You can code, too.

© 2025 Mimo GmbH