Вопрос №17
Осталось:
Как работают встроенные функции map, filter и zip?
Образцовый ответ
Показывать ответ по умолчанию
map — применяет функцию к каждому элементу:
numbers = [1, 2, 3, 4, 5] squares = list(map(lambda x: x ** 2, numbers)) # [1, 4, 9, 16, 25] # Эквивалент через comprehension squares = [x ** 2 for x in numbers]
filter — отбирает элементы по условию:
numbers = [1, 2, 3, 4, 5, 6] evens = list(filter(lambda x: x % 2 == 0, numbers)) # [2, 4, 6] # Эквивалент через comprehension evens = [x for x in numbers if x % 2 == 0]
zip — объединяет несколько коллекций:
names = ["Анна", "Борис", "Вера"] ages = [25, 30, 22] pairs = list(zip(names, ages)) # [('Анна', 25), ('Борис', 30), ('Вера', 22)] # Часто используется для создания словаря user_ages = dict(zip(names, ages)) # {'Анна': 25, 'Борис': 30, 'Вера': 22}
Особенности:
- Все три функции возвращают итераторы, а не списки — для получения списка нужно обернуть в list().
- zip останавливается по самой короткой коллекции.
- В большинстве случаев list comprehension считается более читаемой альтернативой map и filter.
