Python map() function
The map() function is used to apply a given function to every item of an iterable, such as a list or tuple, and returns a map object (which is an iterator).
Let’s start with a simple example of using map() to convert a list of strings into a list of integers.
s = ['1', '2', '3', '4']
res = map(int, s)
print(list(res))
Output
[1, 2, 3, 4]
Explanation: Here, we used the built-in int function to convert each string in the list s into an integer. The map() function takes care of applying int() to every element
Table of Content
Syntax of the map() function
The syntax for the map() function is as follows:
map(function, iterable)
Parameter:
- function: The function we want to apply to every element of the iterable.
- iterable: The iterable whose elements we want to process.
Note: We can also pass multiple iterables if our function accepts multiple arguments.
Converting map object to a list
By default, the map() function returns a map object, which is an iterator. In many cases, we will need to convert this iterator to a list to work with the results directly.
Example: Let’s see how to double each elements of the given list.
a = [1, 2, 3, 4]
# Using custom function in "function" parameter
# This function is simply doubles the provided number
def double(val):
return val*2
res = list(map(double, a))
print(res)
Output
[2, 4, 6, 8]
Explanation:
- The map() function returned an iterator, which we then converted into a list using list(). This is a common practice when working with map()
- We used a custom function to double each value in the list a. The result was mapped and converted into a list for easy display.
map() with lambda
We can use a lambda function instead of a custom function with map() to make the code shorter and easier. Let’s see how to improve the above code for better readability.
a = [1, 2, 3, 4]
# Using lambda function in "function" parameter
# to double each number in the list
res = list(map(lambda x: x * 2, a))
print(res)
Output
[2, 4, 6, 8]
Explanation: We used lambda x: x * 2 to double each value in the list a. The result was mapped and converted into a list for easy display.
Using map() with multiple iterables
We can use map() with multiple iterables if the function we are applying takes more than one argument.
Example: In this example, map() takes two iterables (a and b) and applies the lambda function to add corresponding elements from both lists.
a = [1, 2, 3]
b = [4, 5, 6]
res = map(lambda x, y: x + y, a, b)
print(list(res))
Output
[5, 7, 9]
Examples of map() function
Converting to uppercase
This example shows how we can use map() to convert a list of strings to uppercase.
fruits = ['apple', 'banana', 'cherry']
res = map(str.upper, fruits)
print(list(res))
Output
['APPLE', 'BANANA', 'CHERRY']
Explanation: The str.upper method is applied to each element in the list fruits using map(). The result is a list of uppercase versions of each fruit name.
Extracting first character from strings
In this example, we use map() to extract the first character from each string in a list.
words = ['apple', 'banana', 'cherry']
res = map(lambda s: s[0], words)
print(list(res))
Output
['a', 'b', 'c']
Explanation: The lambda function s: s[0] extracts the first character from each string in the list words. map() applies this lambda function to every element, resulting in a list of the first characters of each word.
Removing whitespaces from strings
In this example, We can use map() to remove leading and trailing whitespaces from each string in a list.
s = [' hello ', ' world ', ' python ']
res = map(str.strip, s)
print(list(res))
Output
['hello', 'world', 'python']
Explanation: The str.strip method removes leading and trailing whitespaces from each string in the list strings. The map() function applies str.strip to each element and returning a list of trimmed strings.
Calculate fahrenheit from celsius
In this example, we use map() to convert a list of temperatures from Celsius to Fahrenheit.
celsius = [0, 20, 37, 100]
fahrenheit = map(lambda c: (c * 9/5) + 32, celsius)
print(list(fahrenheit))
Output
[32.0, 68.0, 98.6, 212.0]
Explanation: The lambda function c: (c * 9/5) + 32 converts each Celsius temperature to Fahrenheit using the standard formula. The map() function applies this transformation to all items in the list celsius.