Глава 4 • Работа со списками
Простая статистика с числовыми списками
Некоторые функции Python предназначены для работы с числовыми списками.
Например, вы можете легко узнать минимум, максимум и сумму числового списка:
>>>
digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] >>>
min(digits) 0
>>>
max(digits) 9
>>>
sum(digits) 45
ПРИМЕЧАНИЕ В примерах этой главы используются короткие списки чисел, но это
делается только для того, чтобы данные помещались на странице . Примеры также бу-
дут работать и в том случае, если список содержит миллионы чисел .
Генераторы списков
Описанный выше способ генерирования списка
squares
состоял из трех или четырех
строк кода.
Генератор списка (list comprehension) позволяет сгенерировать тот же
список всего в одной строке. Генератор списка объединяет цикл
for
и создание новых
элементов в одну строку и автоматически присоединяет к списку все новые элемен-
ты. Учебники не всегда рассказывают о генераторах списка начинающим программи-
стам, но я привожу этот материал, потому что вы с большой вероятностью встретите
эту конструкцию, как только начнете просматривать код других разработчиков.
В следующем примере список квадратов, знакомый вам по предыдущим примерам,
строится с использованием генератора списка:
squares.py squares = [value**2 for value in range(1,11)]
print(squares)
Чтобы использовать этот синтаксис, начните с содержательного имени списка,
например
squares
. Затем откройте квадратные скобки и определите выражение
для значений, которые должны быть сохранены в новом списке. В данном приме-
ре это выражение
value**2
, которое возводит значение во вторую степень. Затем
напишите цикл
for
для генерирования чисел, которые должны передаваться вы-
ражению, и закройте квадратные скобки. Цикл
for
в данном примере —
for
value
in
range(1,11)
— передает значения с 1 до 10 выражению
value**2
. Обратите вни-
мание на отсутствие двоеточия в конце команды
for
.
Результатом будет уже знакомый вам список квадратов:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
Чтобы успешно писать собственные генераторы списков, необходим опреде-
ленный опыт. Тем не менее, как только вы освоитесь с созданием обычных
Работа с частью списка
75 списков, вы оцените возможности генераторов. Когда после очередного трех-
четырехстрочного блока вам это надоест, подумайте о написании собственных
генераторов списков.