Статья Автор: Деникина Наталья Владимировна

Списочные выражения

Цель занятия: изучить синтаксис списочных выражений для обработки и создания коллекций, изучить примеры их использования. Дать понятие двумерным спискам, получить навыки создавать двумерные списки с помощью списочных выражений.

В Python, кроме уже известных нам функций и методов, существует удобный способ обработки и создания списков — списочные выражения (list comprehensions). Рассмотрим их применение на примере.

Необходимо создать список из 5 целых чисел, которые вводятся с клавиатуры, каждое число с новой строки. Вариант программы без использования списочных выражений:



С использованием списочных выражений программа запишется так:


Обратите внимание, что цикл теперь находится внутри списочного выражения и на каждой итерации программа получает введённую строку, превращает её в целое число и добавляет к списку. Применение списочных выражений для генерации списков улучшает читаемость кода.

В списочных выражениях можно не только запустить цикл, но и использовать условный оператор. Добавим в наш пример условие: в списке должны оказаться только числа, значение которых больше среднего арифметического всех введённых чисел:



Внутри списочного выражения мы использовали условный оператор, а в список в результате попадут только те элементы, для которых выполнится условие в условном операторе. Построенное списочное выражение можно прочитать так: "пройди по элементам списка numbers и запиши очередной элемент в результирующий список, если для элемента выполняется условие".

Обратите внимание на некорректный с точки зрения производительности пример использования списочного выражения. В нашем примере мы могли бы обойтись без дополнительной переменной, поместив функцию sum() внутри списочного выражения:



Однако с точки зрения производительности это будет ошибкой, так как сумма элементов списка будет пересчитываться для каждого проверяемого элемента списка, а не один раз как в предыдущей версии программы.


Списочные выражения можно применять не только для списков. Напишем программу, которая сгенерирует для некоторой строки список кодов символов этой строки из таблицы кодировки:


Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать