Что такое map(), filter(), zip(), enumerate()?

Все четыре — встроенные функции для работы с итерируемыми объектами: map(func, iterable, ...) применяет функцию к каждому элементу и возвращает итератор результатов; filter(func, iterable) оставляет только элементы, для которых функция вернула True; zip(iter1, iter2, ...) «сшивает» несколько итерируемых в кортежи по позициям; enumerate(iterable, start=0) добавляет к элементам порядковый номер (индекс, значение).
Подробный ответ

map() — применение функции к каждому элементу

map() берёт функцию и один или несколько итерируемых объектов и возвращает итератор, где каждый элемент — результат применения функции к соответствующим элементам входа.

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

Особенности: в Python 3 возвращает ленивый итератор, а не список. Аналог можно записать через list‑comprehension: [x * x for x in numbers].

filter() — отбор по условию

filter() оставляет только те элементы, для которых функция‑предикат вернула True.

numbers = [1, 2, 3, 4, 5, 6]
evens = filter(lambda x: x % 2 == 0, numbers)
print(list(evens))  # [2, 4, 6]

Тоже возвращает итератор. Эквивалентный list‑comprehension: [x for x in numbers if x % 2 == 0].

zip() — параллельный обход и «сшивание» коллекций

zip() объединяет элементы нескольких итерируемых объектов в кортежи по индексам.

names = ["Alice", "Bob", "Carol"]
scores = [10, 20, 15]
pairs = list(zip(names, scores))
# [('Alice', 10), ('Bob', 20), ('Carol', 15)]

Особенности: останавливается, когда закончился самый короткий из входов. Удобен для параллельного обхода и для «разворачивания» структур: zip(*pairs).

enumerate() — индекс + значение

enumerate() добавляет к элементам последовательности счётчик (индекс).

users = ["Ann", "Max", "Leo"]
for i, name in enumerate(users, start=1):
    print(i, name)
# 1 Ann
# 2 Max
# 3 Leo

Плюсы: не нужно писать for i in range(len(users)) и обращаться через users[i]. Параметр start задаёт начальный номер (по умолчанию 0).

Как компактно ответить на собеседовании

Функция map() применяет функцию к каждому элементу и даёт итератор результатов, filter() отбрасывает элементы, не прошедшие условие, zip() «сшивает» несколько последовательностей в кортежи по позициям, а enumerate() добавляет к элементам их индекс. Все они упрощают работу с коллекциями и делают код короче и понятнее по сравнению с ручными циклами.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге