Python map() function

Python map() function is used to apply a function on all the elements of specified iterable and return map object. Python map object is an iterator, so we can iterate over its elements. We can also convert map object to sequence objects such as list, tuple etc. using their factory functions.

Python map() function

Python map() function syntax is:

map(function, iterable, ...)

We can pass multiple iterable arguments to map() function, in that case, the specified function must have that many arguments. The function will be applied to these iterable elements in parallel. With multiple iterable arguments, the map iterator stops when the shortest iterable is exhausted.

Python map() example

Let’s write a function to be used with map() function.

def to_upper_case(s):
    return str(s).upper()

It’s a simple function that returns the upper case string representation of the input object. I am also defining a utility function to print iterator elements. The function will print iterator elements with white space and will be reused in all the code snippets.

def print_iterator(it):
    for x in it:
        print(x, end=' ')
    print('')  # for new line

Python map() with string

map_iterator = map(to_upper_case, 'abc')
print(type(map_iterator))
print_iterator(map_iterator)

Output:

Python map() with tuple

map_iterator = map(to_upper_case, (1, 'a', 'abc'))
print_iterator(map_iterator)

Output:

Python map() with list

map_iterator = map(to_upper_case, ['x', 'a', 'abc'])
print_iterator(map_iterator)

Output:

Converting map to list, tuple, set

Since map object is an iterator, we can pass it as an argument to the factory methods for creating a list, tuple, set etc.

map_iterator = map(to_upper_case, ['a', 'b', 'c'])
my_list = list(map_iterator)
print(my_list)

map_iterator = map(to_upper_case, ['a', 'b', 'c'])
my_set = set(map_iterator)
print(my_set)

map_iterator = map(to_upper_case, ['a', 'b', 'c'])
my_tuple = tuple(map_iterator)
print(my_tuple)

Output:

['A', 'B', 'C']
{'C', 'B', 'A'}
('A', 'B', 'C')

Python map() with lambda

We can use lambda functions with map() if we don’t want to reuse it. This is useful when our function is small and we don’t want to define a new function.

list_numbers = [1, 2, 3, 4]

map_iterator = map(lambda x: x * 2, list_numbers)
print_iterator(map_iterator)

Output:

Python map() multiple arguments

Let’s look at an example of using map() function with multiple iterable arguments.

list_numbers = [1, 2, 3, 4]
tuple_numbers = (5, 6, 7, 8)
map_iterator = map(lambda x, y: x * y, list_numbers, tuple_numbers)
print_iterator(map_iterator)

Output: 5 12 21 32 Notice that our function has two arguments. The output map iterator is the result of applying this function to the two iterable elements in parallel. Let’s see what happens when the iterables are of different sizes.

list_numbers = [1, 2, 3, 4]
tuple_numbers = (5, 6, 7, 8, 9, 10)
map_iterator = map(lambda x, y: x * y, list_numbers, tuple_numbers)
print_iterator(map_iterator)

map_iterator = map(lambda x, y: x * y, tuple_numbers, list_numbers)
print_iterator(map_iterator)

Output:

So when the arguments are of different sizes, then the map function is applied to the elements until one of them is exhausted.

Python map() with function None

Let’s see what happens when we pass the function as None.

map_iterator = map(None, 'abc')
print(map_iterator)
for x in map_iterator:
    print(x)

Output:

Traceback (most recent call last):
  File "/Users/pankaj/Documents/github/journaldev/Python-3/basic_examples/python_map_example.py", line 3, in 
    for x in map_iterator:
TypeError: 'NoneType' object is not callable

Create a Free Account

Register now and get access to our Cloud Services.

Posts you might be interested in:

centron Managed Cloud Hosting in Deutschland

How to Calculate BLEU Score in Python?

Python
How to Calculate BLEU Score in Python? BLEU score in Python is a metric that measures the goodness of Machine Translation models. Though originally it was designed for only translation…