map() — transform each item

map() applies a function to every item in a sequence and returns the results.

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

# Square each number:
def square(x):
    return x ** 2

squared = list(map(square, numbers))
print(squared)  # [1, 4, 9, 16, 25]

# Or with lambda:
squared = list(map(lambda x: x ** 2, numbers))

filter() — keep items that meet condition

filter() keeps only items where the function returns True.

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

# Keep only even numbers:
def is_even(x):
    return x % 2 == 0

evens = list(filter(is_even, numbers))
print(evens)  # [2, 4, 6]

# Or with lambda:
evens = list(filter(lambda x: x % 2 == 0, numbers))

Combining map and filter

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

# Filter evens, then square them:
result = list(map(lambda x: x ** 2, filter(lambda x: x % 2 == 0, numbers)))
print(result)  # [4, 16, 36]

Note: returns iterator

Both map() and filter() return iterators. Use list() to convert to a list if needed:

numbers = [1, 2, 3]
mapped = map(lambda x: x * 2, numbers)
print(list(mapped))  # [2, 4, 6]

List comprehensions alternative

Many prefer list comprehensions for readability:

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

# map equivalent:
squared = [x ** 2 for x in numbers]

# filter equivalent:
evens = [x for x in numbers if x % 2 == 0]