Понимание списков — это мощная функция Python, которая позволяет нам создавать новые списки на основе существующих в краткой и удобочитаемой форме. Помимо перебора элементов, генераторы списков также поддерживают использование условий, что позволяет нам фильтровать и преобразовывать данные при создании нового списка. В этой статье мы рассмотрим различные методы применения условий в генераторах списков, сопровождаемые примерами кода.
Метод 1: базовая условная фильтрация
Самый простой способ применить условие в понимании списка — использовать оператор if. Оператор if помещается в конце понимания и фильтрует элементы на основе указанного условия. Давайте рассмотрим пример, в котором мы хотим создать список четных чисел из другого списка:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [num for num in numbers if num % 2 == 0]
print(even_numbers) # Output: [2, 4, 6, 8, 10]
Метод 2: условное преобразование
Помимо фильтрации мы также можем выполнять преобразования элементов, удовлетворяющих определенному условию. Этого можно достичь, используя тернарный оператор в понимании списка. Давайте посмотрим пример, в котором мы хотим создать список, содержащий квадрат нечетных чисел и исходное число для четных чисел:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
transformed_numbers = [num 2 if num % 2 != 0 else num for num in numbers]
print(transformed_numbers) # Output: [1, 2, 9, 4, 25, 6, 49, 8, 81, 10]
Метод 3: несколько условий.
Списки в Python также поддерживают несколько условий с помощью логических операторов, таких как andи or. Давайте рассмотрим пример, в котором мы хотим создать список чисел, которые делятся как на 2, так и на 3:
numbers = range(1, 101)
divisible_by_2_and_3 = [num for num in numbers if num % 2 == 0 and num % 3 == 0]
print(divisible_by_2_and_3) # Output: [6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96]
Метод 4: использование предложения «else».
Понимание списков также может включать предложение else, которое позволяет нам предоставлять значение по умолчанию для элементов, которые не удовлетворяют условию. Давайте рассмотрим пример, в котором мы хотим создать список четных чисел в квадрате и строку «NA» для нечетных чисел:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
squared_numbers = [num 2 if num % 2 == 0 else "NA" for num in numbers]
print(squared_numbers) # Output: ['NA', 4, 'NA', 16, 'NA', 36, 'NA', 64, 'NA', 100]
Списки с условиями предоставляют краткий и элегантный способ фильтрации и преобразования данных при создании новых списков в Python. В этой статье мы рассмотрели несколько методов применения условий в генераторах списков, включая базовую фильтрацию, условные преобразования, множественные условия и использование предложения else. Используя эти методы, вы сможете писать более выразительный и эффективный код.