Добавление условий
Часть раздела Logic & Flow путешествия по Python на Coddy — урок 52 из 78.
Генераторы списков становятся еще более мощными, когда вы добавляете условную логику. Это позволяет создавать новые списки на основе существующих, фильтруя и преобразуя элементы на основе заданных условий.
Синтаксис для добавления условия в генератор списка (list comprehension) следующий:
new_list = [expression for item in iterable if condition]Вот разбор синтаксиса:
new_list: Новый список, который будет создан.
expression: Значение, которое будет включено вnew_list. Это может быть измененная версияitem.
for item in iterable: Цикл, который перебирает каждый элемент вiterable(например, список, кортеж или диапазон).
item: Текущий элемент, обрабатываемый в цикле.
if condition: Фильтр, который определяет, должен ли текущийitemбыть включен вnew_list.expressionвычисляется только в том случае, еслиconditionимеет значениеTrue.
Вот пример:
numbers = [1, 2, 3, 4, 5, 6]
evens = [n for n in numbers if n % 2 == 0]
print(evens)
# Вывод: [2, 4, 6]В этом примере списковое включение создает новый список под названием evens, извлекая каждый элемент n из списка numbers и включая его только в том случае, если он четный (т. е. n % 2 == 0).
Задание
ЛегкоСоздайте функцию с именем filter_and_square, которая принимает список чисел numbers в качестве аргумента. Функция должна использовать списковое включение для создания нового списка, который включает в себя квадраты только положительных чисел из исходного списка. Функция должна возвращать новый список.
Шпаргалка
Генераторы списков с условной логикой позволяют фильтровать и преобразовывать элементы на основе заданных условий:
new_list = [expression for item in iterable if condition]expression: Значение, которое будет включено в новый списокfor item in iterable: Цикл по каждому элементуif condition: Фильтр, определяющий, должен ли элемент быть включен
Пример — фильтрация четных чисел:
numbers = [1, 2, 3, 4, 5, 6]
evens = [n for n in numbers if n % 2 == 0]
print(evens)
# Вывод: [2, 4, 6]Попробуйте сами
def filter_and_square(numbers):
# Напишите здесь кодВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Logic & Flow
1Изучение переменных
КонстантыМножественное присваиваниеОбмен значениями переменныхПеременные-заполнителиОкругление чиселПриведение к списку4Приложение «Книга контактов»
Показать менюДобавить контакт7Множества. Часть 2
Математические операции. Часть 1Математические операции. Часть 2Повторение — Охота за сокровищамиПодмножества и надмножестваИтерация по множествамПовторение — Трекер турнира10Базовые генераторы списков
СинтаксисСоздание простых списковДобавление условийИспользование агрегации данныхПовторение — Дом списковПовторение — Элементы свободы13Система управления запасами
Обзор проектаДобавление товара2Словари. Часть 1
Что такое словарь?Создание словаряДоступ к значениямИзменение словарейИтоги — Менеджер рецептов5Продвинутое принятие решений
Тернарный операторПроверка вхожденияПроверка идентичностиОшибки отступовПовторение — Фильтр отпусков8Менеджер записей студентов
Обзор проектаДобавить студента11Продвинутые функции
Возврат нескольких значенийLambda-функции. Часть 1Lambda-функции. Часть 2Задача на повторение — Lambda-сортировкаРекурсивные функции. Часть 1Рекурсивные функции. Часть 2Повторение — сумма вложенного списка14Функции высшего порядка
Функция mapФункция filterПовторение — Валидатор emailПовторение — Обработчик чисел3Словари. Часть 2
Методы словарейВложенные словариПроверка наличия ключейПеребор словарей в циклеПовторение: счетчик частоты6Множества. Часть 1
Что такое множество?Основные операцииМетоды множествПовторение — удаление дубликатов9Продвинутая агрегация данных
Использование SumПоиск минимума и максимумаЭффективная сортировка данныхПовторение — Dictionary Sorter