Функции map() и filter() — это два мощных инструмента функционального программирования в Python. Они позволяют обрабатывать коллекции данных без явных циклов, делая код компактнее и выразительнее.
map() берёт функцию и применяет её к каждому элементу последовательности. Например, если нужно возвести все числа в квадрат — map() справится с этим в одну строку.
filter() работает иначе: она тоже принимает функцию, но использует её как фильтр. Функция должна возвращать True или False, и в результат попадают только те элементы, для которых получили True.
Обе функции возвращают не список, а специальные объекты-итераторы. Чтобы увидеть результат, их обычно оборачивают в list(). Это может показаться неудобным, но на самом деле экономит память при работе с большими данными.
В этом тренажёре ты научишься применять map() и filter() в разных ситуациях: от простого преобразования чисел до комбинирования обеих функций вместе.
- Модуль 1: Основы синтаксиса Python
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Арифметические операторы (+, -, *, /).
- Целочисленное деление и остаток (// и %).
- Возведение в степень (**).
- Операторы сравнения.
- Логические операторы (and, or, not).
- Операторы присваивания (=, +=, -=).
- Операторы принадлежности (in, not in).
- Операторы идентичности (is, is not).
- Битовые операторы.
- Тернарный оператор.
- Модуль 4: Ввод и вывод данных
- Модуль 5: Условные конструкции
- Модуль 6: Циклы
- Модуль 7: Строки
- Модуль 8: Списки
- Модуль 9: Кортежи
- Модуль 10: Словари
- Модуль 11: Множества
- Модуль 12: Функции
- Модуль 13: Встроенные функции
- Функции map() и filter().
- Функция reduce().
- Функция sorted().
- Функции all() и any().
- Модуль 14: Работа с файлами
- Модуль 15: Обработка исключений
- Модуль 16: Модули и пакеты
- Модуль 17: ООП - Основы
- Модуль 18: ООП - Продвинутый уровень
- Модуль 19: Декораторы
- Модуль 20: Генераторы и итераторы
- Модуль 21: Регулярные выражения
- Модуль 22: Дата и время
- Модуль 23: Математические операции
- Модуль 24: Работа с сетью
- Модуль 25: Асинхронное программирование
- Модуль 26: Многопоточность
- Модуль 27: Тестирование
- Модуль 28: Базы данных
- Модуль 29: Алгоритмы и структуры данных
- Модуль 30: Продвинутые возможности
Сопоставь функцию и её назначение
Перед тобой описания двух встроенных функций Python. Сопоставь каждое описание с соответствующей функцией из правого столбца.
filter()map()Обе функцииБазовый синтаксис map()
Допиши код так, чтобы функция map() применила встроенную функцию str() к каждому числу в списке, превратив числа в строки.
numbers = [1, 2, 3, 4, 5]
result = input1S(input2S, input3S)
print(list(result))Что вернёт map() с функцией len?
Изучи код. Функция map() применяет len() к каждому элементу списка слов. Что будет выведено на экран?
words = ["cat", "elephant", "dog"]
lengths = map(len, words)
print(list(lengths))Базовый синтаксис filter()
Допиши код, чтобы filter() оставила только положительные числа из списка. Используй lambda-функцию для проверки условия.
numbers = [-2, -1, 0, 1, 2, 3]
positive = input1S(input2S, numbers)
print(list(positive))Фильтрация строк по длине
Функция filter() отбирает слова, длина которых больше 4 символов. Какой результат будет выведен?
words = ["hi", "hello", "world", "ok"]
long_words = filter(lambda w: len(w) > 4, words)
print(list(long_words))Исправь ошибку в вызове map()
Код должен возвести каждое число в квадрат, но содержит ошибку. Найди и исправь строку с ошибкой.
numbers = [1, 2, 3, 4]squared = map(lambda x: x**2(), numbers)print(list(squared))Распредели выражения по функциям
Посмотри на примеры использования map() и filter(). Распредели их по категориям в зависимости от того, какая функция лучше подходит для решения задачи.
Собери код: удвоение чисел
Собери работающий код, который использует map() для удвоения каждого числа в списке и выводит результат. Одна строка лишняя.
doubled = map(lambda x: x * 2, nums)print(list(doubled))nums = [5, 10, 15]doubled = filter(lambda x: x * 2, nums)Вычисли результат map() с abs()
Функция abs() возвращает абсолютное значение числа (модуль). Что выведет этот код? Введи ответ в формате списка, например: [1, 2, 3]
numbers = [-3, 0, 4, -7]
result = list(map(abs, numbers))
print(result)Исправь ошибку в filter()
Код должен отфильтровать числа, оставив только те, что делятся на 3 без остатка. Но что-то пошло не так. Найди и исправь ошибку.
numbers = [1, 3, 6, 7, 9, 12]divisible = filter(lambda x: x / 3 == 0, numbers)print(list(divisible))Собери код из банка токенов
Используя токены из банка, собери код, который отфильтрует список, оставив только непустые строки. Некоторые токены лишние.
texts = ["hello", "", "world", "", "python"]
non_empty = input1S(input2S, input3S)
print(list(non_empty))Комбинация map() и filter()
Код сначала фильтрует чётные числа, а потом возводит их в квадрат. Что будет выведено?
numbers = [1, 2, 3, 4, 5]
evens = filter(lambda x: x % 2 == 0, numbers)
squared = map(lambda x: x ** 2, evens)
print(list(squared))Восстанови порядок: обработка данных
Расставь строки в правиль��ом порядке, чтобы код: 1) создал список цен, 2) отфильтровал цены больше 50, 3) применил скидку 10% к отфильтрованным, 4) вывел результат.
expensive = filter(lambda p: p > 50, prices)discounted = map(lambda p: p * 0.9, expensive)print(list(discounted))prices = [30, 75, 50, 120, 45]filter() с None вместо функции
Если передать None вместо функции в filter(), она отбросит все "ложные" значения (0, None, False, пустые строки). Что выведет код? Введи ответ в формате списка.
data = [0, 1, "", "hi", None, 42, False]
truthy = list(filter(None, data))
print(truthy)Собери: преобразование словаря
Собери код, который извлечёт все цены из списка словарей и увеличит каждую на 20%. Две строки лишние.
prices = map(lambda p: p['price'], products)increased = map(lambda x: x * 1.2, prices)products = [{'name': 'A', 'price': 100}, {'name': 'B', 'price': 200}]print(list(increased))prices = filter(lambda p: p['price'], products)increased = map(lambda x: x + 1.2, prices)