Python offers a number of functional programming utilities even though it's primarily an object-oriented programming language. And the most notable one is the map() function.

In this article, we'll explore what the `map()` function is and how to use it in your code.

# The map() function in Python

The `map()` function (which is a built-in function in Python) is used to apply a function to each item in an iterable (like a Python list or dictionary). It returns a new iterable (a map object) that you can use in other parts of your code.

The general syntax for this is:

``map(function, iterable, [iterable1, iterable2, ...])``

Let's see an example: imagine you have a list of numbers, and you want to create a new list with the cubes of the numbers in the first list. A traditional approach would involve using the for loop:

``````org_list = [1, 2, 3, 4, 5]
fin_list = []

for num in org_list:
fin_list.append(num**3)

print(fin_list) # [1, 8, 27, 64, 125]``````

which is perfectly valid, but let's see how using the `map()` function simplifies your code:

``````org_list = [1, 2, 3, 4, 5]

# define a function that returns the cube of `num`
def cube(num):
return num**3

fin_list = list(map(cube, org_list))
print(fin_list) # [1, 8, 27, 64, 125]``````

Don't know about you, but I find this to be much cleaner logic.

In case you're wondering what went on behind the scenes, the `map()` function essentially iterated through each element of the iterable (in our case, `org_list`) and applied the cube function on it. It finally returned a new iterable (`fin_list` ) with the result.

## How to Use Lambda Expressions in Python

Instead of writing a separate function to calculate the cube of a number, we can use a lambda expression in its place. Here's how you'd do that:

``````fin_list = list(map(lambda x:x**3, org_list))
print(fin_list) # [1, 8, 27, 64, 125]``````

Much cleaner, wouldn't you agree?

## How to Use Built-in Functions in Python

You can also pass in built-in Python functions. For example if you had a list of strings, you can easily create a new list with the length of each string in the list.

``````org_list = ["Hello", "world", "freecodecamp"]
fin_list = list(map(len, org_list))
print(fin_list) # [5, 5, 12]``````

## How to Use Functions with Multiple Iterables in Python

So far we've passed into `map()` functions that take only one argument (recall the `cube(num)`). But what if your function takes in multiple arguments? An example of this would be the `pow(x, y)` function that takes in 2 arguments (it returns the result of x^y).

To apply a function with multiple arguments, simply pass in another iterable name following the first one.

``````base = [1, 2, 3, 4]
power = [1, 2, 3, 4]

result = list(map(pow, base, power))
print(result) # [1, 4, 27, 256]``````

# Wrapping Up

In this article, you've learned how to work with the `map()` function in Python. You also saw how it can dramatically reduce the size of your code, making it more readable and bug-free.

You should now be comfortable working with `map()` using built-in functions, lambda expressions, and even your own custom function!