11.1. Генераторы.

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

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

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

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

Генераторы в Python - это специальный тип функций, которые позволяют создавать итерируемые последовательности значений по требованию. Они эффективно используются для работы с большими объемами данных или при необходимости создания последовательностей значений без занимания большого объема памяти. Генераторы могут быть использованы в циклах, в функциях `for...in`, а также в других контекстах, где ожидается итерируемый объект.
 
Генераторы списков (List Comprehensions)
# Пример генератора списка чисел от 0 до 9
gen_list = [x for x in range(10)]
print(gen_list)  # Вывод: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# Пример генератора списка квадратов чисел от 0 до 9
squared = [x**2 for x in range(10)]
print(squared)  # Вывод: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
 
Генераторы множеств (Set Comprehensions)
# Пример генератора множества квадратов чисел от 0 до 9
squared_set = {x**2 for x in range(10)}
print(squared_set)  # Вывод: {0, 1, 4, 9, 16, 25, 36, 49, 64, 81}
 
Генераторы словарей (Dictionary Comprehensions)
# Пример генератора словаря, где ключами являются числа от 0 до 4, а значениями - их квадраты
squared_dict = {x: x**2 for x in range(5)}
print(squared_dict)  # Вывод: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
 
Генераторы кортежей (Tuple Comprehensions)
# Пример генератора кортежа квадратов чисел от 0 до 4
squared_tuple = tuple(x**2 for x in range(5))
print(squared_tuple)  # Вывод: (0, 1, 4, 9, 16)
 
Генераторы выражений (Generator Expressions)
# Пример генератора выражения квадратов чисел от 0 до 9
squared_gen = (x**2 for x in range(10))
print(squared_gen)  # Вывод: <generator object <genexpr> at 0x7f9dfc9e3940>
print(list(squared_gen))  # Преобразование генератора в список
Генераторы в Python очень полезны при обработке больших объемов данных и позволяют экономить память компьютера, так как они генерируют значения по мере необходимости, а не сохраняют их все сразу в памяти. Они также обеспечивают более чистый и компактный синтаксис кода, что делает его более читаемым и поддерживаемым.
Генераторы с условиями, также известные как условные генераторы, позволяют создавать итерируемые объекты, удовлетворяющие определенным условиям. Это удобный способ фильтрации значений и создания последовательностей только тех элементов, которые соответствуют определенным критериям. Примеры таких генераторов:
 
Генераторы списков с условиями
# Создание списка четных чисел от 0 до 9
even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers)  # Вывод: [0, 2, 4, 6, 8]

# Создание списка квадратов нечетных чисел от 0 до 9
squared_odd_numbers = [x**2 for x in range(10) if x % 2 != 0]
print(squared_odd_numbers)  # Вывод: [1, 9, 25, 49, 81]
 
Генераторы множеств с условиями
# Создание множества четных чисел от 0 до 9
even_numbers_set = {x for x in range(10) if x % 2 == 0}
print(even_numbers_set)  # Вывод: {0, 2, 4, 6, 8}

# Создание множества квадратов нечетных чисел от 0 до 9
squared_odd_numbers_set = {x**2 for x in range(10) if x % 2 != 0}
print(squared_odd_numbers_set)  # Вывод: {1, 9, 25, 49, 81}
 
Генераторы словарей с условиями
# Создание словаря, где ключами являются четные числа от 0 до 4, а значениями - их квадраты
even_squared_dict = {x: x**2 for x in range(5) if x % 2 == 0}
print(even_squared_dict)  # Вывод: {0: 0, 2: 4, 4: 16}
 
Генераторы выражений с условиями
# Создание генератора выражения, возвращающего квадраты четных чисел от 0 до 9
squared_even_gen = (x**2 for x in range(10) if x % 2 == 0)
print(list(squared_even_gen))  # Преобразование генератора в список

категории

ТЕОРИЯ

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

Мы в соцсетях