3.5. Генераторы списков.

Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

Самоучитель Python 3, собранный из материалов данного сайта. Предназначен в основном для тех, кто хочет изучить язык программирования Python с нуля.

Генераторы списков - это компактный способ создания списков в Python, используя выражение вместо цикла for. Они позволяют нам создавать списки более эффективно и уменьшает количество строк кода.
 
Синтаксис генератора списка выглядит следующим образом
[выражение for переменная in последовательность if условие]
`выражение` - выражение, которое применяется к каждому элементу последовательности для создания нового элемента списка.
`переменная` - переменная, которая представляет каждый элемент последовательности.
`последовательность` - последовательность элементов, например, список, кортеж, строка или диапазон.
`условие` (необязательно) - условие, которому должен соответствовать элемент для включения его в список. Если условие не указано, все элементы последовательности будут включены.
 
1. Создание списка квадратов чисел от 0 до 9
squares = [x ** 2 for x in range(10)]
print(squares)  # Вывод: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
 
2. Фильтрация списка, оставляя только четные числа
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [x for x in numbers if x % 2 == 0]
print(even_numbers)  # Вывод: [2, 4, 6, 8, 10]
 
3. Создание списка строк в верхнем регистре
words = ["apple", "banana", "cherry"]
uppercase_words = [word.upper() for word in words]
print(uppercase_words)  # Вывод: ['APPLE', 'BANANA', 'CHERRY']
 
4. Генератор списка для строки
string = "hello"
characters = [char for char in string]
print(characters)  # Вывод: ['h', 'e', 'l', 'l', 'o']
 
5. Использование вложенных генераторов списков
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened_matrix = [x for row in matrix for x in row]
print(flattened_matrix)  # Вывод: [1, 2, 3, 4, 5, 6, 7, 8, 9]
Вы можете использовать генератор списка с несколькими условиями, добавляя дополнительные условия после основного цикла for или внутри выражения, которое формирует элементы списка.
 
Генератор списка с двумя условиями
Мы используем ключевое слово `and`, чтобы объединить два условия в одно. Этот подход подходит, когда вам нужно применить несколько условий к каждому элементу:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filtered_numbers = [x for x in numbers if x % 2 == 0 and x > 5]
print(filtered_numbers)  # Вывод: [6, 8, 10]
 
Генератор списка с условиями внутри выражения
Мы используем условное выражение (тернарный оператор) внутри генератора списка. Это позволяет нам применять разные преобразования к элементам в зависимости от их соответствия определенному условию:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filtered_numbers = [x if x % 2 == 0 else 0 for x in numbers if x > 5]
print(filtered_numbers)  # Вывод: [6, 0, 8, 0, 10]

категории

ТЕОРИЯ

  • Введение в Python
  • Основы программирования на Python
  • Управляющие конструкции
  • Структуры данных
  • Функции и модули
  • Обработка исключений
  • Работа с файлами и потоками
  • файловая система
  • Объектно-ориентированное программирование (ООП)
  • Регулярные выражения
  • Дополнительные темы

Мы в соцсетях