PYTHON

Python map() Function: Mapping in Python

map() is a built-in function that applies a given function to each item of a sequence and returns a map object.

How to Use map() in Python

The map() function takes at least two arguments: the function to apply and the sequence, e.g. a list, string, or tuple. You can also pass multiple sequences as arguments and apply the mapped function to all the items.

map() returns a new iterator containing the results after applying the function.

map(function, sequence, ...)
  • function: The function to apply to each item.
  • sequence: A sequence or multiple sequences to apply the function to (e.g., lists, tuples).

Basic Usage

numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x**2, numbers)
print(list(squared_numbers))  # Outputs: [1, 4, 9, 16, 25]

When to Use the map() Function in Python

In Python, the function map() is useful for applying a transformation to each item of a sequence.

Performing Calculations

You can use map() to perform calculations on a list of numbers, applying a consistent transformation to each element.

def add_five(x):
    return x + 5

numbers = [1, 2, 3, 4, 5]
result = map(add_five, numbers)
print(list(result))  # Outputs: [6, 7, 8, 9, 10]

Processing Strings

The map() function efficiently processes lists of strings, such as converting all strings to uppercase.

def to_uppercase(s):
    return s.upper()

strings = ["hello", "world", "python"]
upper_strings = map(to_uppercase, strings)
print(list(upper_strings))  # Outputs: ['HELLO', 'WORLD', 'PYTHON']

Mapping Lists in Python

With Python lists, map() allows you to process multiple lists simultaneously by passing multiple sequences.

numbers1 = [1, 2, 3]
numbers2 = [4, 5, 6]

result = map(lambda x, y: x + y, numbers1, numbers2)
print(list(result))  # Outputs: [5, 7, 9]

Examples of Using Map Function in Python

Filtering and Mapping Data

Data analytics platforms can use map() to preprocess and filter data. For example, they might filter out negative numbers and double the remaining values.

numbers = [-10, -5, 0, 5, 10]
result = map(lambda x: x * 2, filter(lambda x: x > 0, numbers))
print(list(result))  # Outputs: [10, 20]

Updating Data in Django Models

Web applications like Django use map() to update a list of user records.

usernames = ["alice", "bob", "charlie"]
new_usernames = map(str.capitalize, usernames)
print(list(new_usernames))  # Outputs: ['Alice', 'Bob', 'Charlie']

Generating HTML Elements

Web development frameworks use map() to dynamically generate HTML code from a data list.

items = ['Home', 'About', 'Contact']
html_list = map(lambda item: f'<li>{item}</li>', items)
print(list(html_list))  # Outputs: ['<li>Home</li>', '<li>About</li>', '<li>Contact</li>']

Learn More About Python Map Function

Python Map with Lists

The map() function works especially well with lists since it allows you to apply a function to each list element.

numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x**2, numbers))
print(squared_numbers)  # Outputs: [1, 4, 9, 16, 25]

Map vs. List Comprehension in Python

You can achieve similar results using list comprehensions. However, map() can be clearer when applying simple transformations.

numbers = [1, 2, 3, 4, 5]
squared_numbers = [x**2 for x in numbers]
print(squared_numbers)  # Outputs: [1, 4, 9, 16, 25]

# Equivalent using map
squared_numbers = list(map(lambda x: x**2, numbers))
print(squared_numbers)  # Outputs: [1, 4, 9, 16, 25]

Handling Multiple Iterables

map() excels in scenarios requiring the combination of multiple sequences.

numbers1 = [10, 20, 30]
numbers2 = [1, 2, 3]

added_numbers = list(map(lambda x, y: x + y, numbers1, numbers2))
print(added_numbers)  # Outputs: [11, 22, 33]

Performance Considerations for Map

The map() function creates an iterator rather than a list in memory. This makes map() more memory-efficient than list comprehensions for large datasets.

large_numbers = range(1, 1000000)
doubled = map(lambda x: x * 2, large_numbers)

# Convert to list when needed
result = list(doubled)
print(result[:5])  # Outputs: [2, 4, 6, 8, 10]

Combining Map with Other Functions

For more complex data operations, you can combine map() with other built-in functions like filter() and reduce().

from functools import reduce

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

# Double the numbers and then calculate their product
doubled = map(lambda x: x * 2, numbers)
product = reduce(lambda x, y: x * y, doubled)
print(product)  # Outputs: 3840

Using Lambda Functions with map()

Lambda functions are anonymous functions that allow you to apply simple transformations without needing to define separate functions. Using lambda functions with map() can help you keep your code simple.

numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x**2, numbers)
print(list(squared_numbers))  # Outputs: [1, 4, 9, 16, 25]

# Using lambda with multiple sequences
numbers1 = [1, 2, 3]
numbers2 = [4, 5, 6]
added_numbers = map(lambda x, y: x + y, numbers1, numbers2)
print(list(added_numbers))  # Outputs: [5, 7, 9]
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.

© 2024 Mimo GmbH