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]