Встроенные функции Python: часть 2 (map, filter, zip, и др.)

🔄 Функция map(): Трансформация данных без циклов

Когда нужно применить одну функцию ко всем элементам коллекции, map() — твой лучший друг!

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

Как это работает? - Первый аргумент — функция (можно использовать lambda или обычную функцию) - Второй аргумент — итерируемый объект - Возвращает итератор (поэтому оборачиваем в list())

🔥 Реальный пример: Конвертация температуры из Цельсия в Фаренгейт

celsius = [0, 10, 20, 37]
fahrenheit = list(map(lambda c: (9/5)*c + 32, celsius))
print(fahrenheit)  # [32.0, 50.0, 68.0, 98.6]

Функция filter(): Искусство отбора

Нужны только те элементы, которые удовлетворяют условию? filter() сделает это элегантно!

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

Важные нюансы: - Возвращает итератор с элементами, для которых функция вернула True - Если передать None вместо функции, будут отобраны "истинные" элементы:

values = [0, 1, '', 'hello', None, False, True]
truthy = list(filter(None, values))
print(truthy)  # [1, 'hello', True]

🤝 Функция zip(): Параллельные миры коллекций

Объединяет элементы нескольких итерируемых объектов попарно — как молния на куртке!

names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]
zipped = list(zip(names, ages))
print(zipped)  # [('Alice', 25), ('Bob', 30), ('Charlie', 35)]

Лайфхак: Можно распаковать обратно с помощью zip(*zipped)

💡 Практическое применение: Создание словаря из двух списков

person_dict = dict(zip(names, ages))
print(person_dict)  # {'Alice': 25, 'Bob': 30, 'Charlie': 35}

🎭 Функция enumerate(): Индексы и значения в одном флаконе

Больше никаких range(len())! Получай индекс и значение одновременно.

fruits = ['apple', 'banana', 'cherry']
for index, fruit in enumerate(fruits, start=1):
    print(f"{index}. {fruit}")

Вывод:

1. apple
2. banana
3. cherry

Параметр start позволяет начать нумерацию с любого числа (по умолчанию 0).


🧮 Функция sum(): Не только для чисел

Все знают, что sum() складывает числа, но она умеет больше!

# Сумма чисел
numbers = [1, 2, 3, 4]
print(sum(numbers))  # 10

# С начальным значением
print(sum(numbers, 10))  # 20

# Сложение списков (начиная с Python 3.8)
lists = [[1, 2], [3, 4], [5, 6]]
print(sum(lists, []))  # [1, 2, 3, 4, 5, 6]

️ Функция any() и all(): Логические детективы

Эти функции — мощные инструменты для проверки условий:

# any() возвращает True, если хотя бы один элемент истинный
checks = [False, True, False]
print(any(checks))  # True

# all() возвращает True, если все элементы истинные
print(all(checks))  # False

Отличный пример из практики Данилы Бежина (https://www.youtube.com/@DanilaBezhin):

# Проверка, все ли числа в списке положительные
numbers = [1, 2, 3, -4, 5]
if not all(x > 0 for x in numbers):
    print("Есть отрицательные числа!")

Когда что использовать: Шпаргалка

Функция Когда использовать Альтернатива
map() Трансформация всех элементов Генератор списка
filter() Отбор элементов по условию Генератор с if
zip() Параллельная обработка нескольких коллекций enumerate()
enumerate() Нужны и индексы, и значения range(len())

Попробуй решить эту задачу, используя изученные функции:

# Дан список слов, вернуть список длин слов, которые начинаются на 'a'
words = ['apple', 'banana', 'apricot', 'cherry', 'avocado']
# Решение: [len(word) for word in words if word.startswith('a')]
# Или с map и filter: list(map(len, filter(lambda x: x.startswith('a'), words)))

Теперь ты вооружён мощными инструментами Python! Эти функции сделают твой код чище, а работу — приятнее. Экспериментируй и комбинируй их для решения сложных задач простыми способами.

Скрыть рекламу навсегда

📘 VK Видео — обучение без ограничений

Все уроки доступны без VPN, без блокировок и зависаний.

Можно смотреть с телефона, планшета или компьютера — в любое время.

▶️ Смотреть на VK Видео