Menu
Coddy logo textTech

Добавление условий

Часть раздела 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).

challenge icon

Задание

Легко

Создайте функцию с именем 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):
    # Напишите здесь код
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Logic & Flow