x = [1, 2, 3]
Вам не нужно объявлять список или заранее фиксировать его размер. Эта строка программы создает список, а также присваивает его переменной, причем этот список автоматически увеличивается или сокращается по мере необходимости. МАССИВЫ В PYTHON
В Python доступен модуль array , который предоставляет поддержку массивов на базе типов данных C. Информацию об использовании этого модуля можно найти в справочнике Python Library Reference. Я рекомендую обращаться к этому модулю только в том случае, если вам действительно необходимо повышение быстродействия. Если ситуация требует интенсивных расчетов, рассмотрите возможность использования пакета NumPy , упомянутого в главе 4 (он доступен на сайте www.scipy.org).
В отличие от списков во многих языках программирования, списки Python также могут содержать элементы разных типов; элементом списка может быть любой объект Python. Следующий список содержит разнородные элементы: # Первый элемент - число, второй - строка, третий - другой список. x = [2, "two", [1, 2, 3]]
Пожалуй, основной встроенной функцией списков является функция len , которая возвращает количество элементов в списке:
>>> x = [2, "two", [1, 2, 3]]
>>> len(x)
3
Обратите внимание: функция len не учитывает элементы внутреннего вложенного списка.
БЫСТРАЯ.ПРОВЕРКА:.LEN()
Что вернет функция len() для каждого из следующих списков: [0]; []; [[1, 3, [4, 5], 6], 7]?
5.2. Индексы списков
Если вы будете понимать, как работают индексы списков, вы сможете извлечь намного больше пользы из программирования на языке Python. Пожалуйста, вни-мательно прочитайте весь раздел!
Для извлечения элементов из списка Python используется синтаксис, сходный с синтаксисом индексирования массивов C. Как в C и во многих других языках, отсчет индексов в Python начинается с 0; при запросе элемента 0 вы получаете первый элемент списка, при запросе элемента 1 — второй элемент и т. д. Несколько примеров:
>>> x = ["first", "second", "third", "fourth"]
>>> x[0]
'first'
>>> x[2]
'third'
Однако механизм индексирования Python заметно превосходит индексирование C по гибкости. Отрицательные индексы обозначают позиции элементов от конца списка; –1 соответствует последней позиции списка, –2 — предпоследней и т. д. Продолжим пример для того же списка x :
>>> a = x[-1]
>>> a
'fourth'
>>> x[-2]
'third'
Для операций, в которых задействован только один индекс списка, обычно мож-но представлять индекс как указатель на конкретный элемент списка. Для более сложных операций индексы правильнее представлять как обозначения позиций между элементами. Так, для списка ["frst", "second", "third", "fourth"] индексы можно представлять так:
Это не так важно при извлечении одного элемента, но Python может извлекать или выполнять присваивание сразу для целой части списка — такая операция на-зывается сегментированием (slicing). Вместо того чтобы вводить list[index] для извлечения элемента после позиции index , введите list[index1:index2] для из-влечения всех элементов от index1 (включительно) до index2 (не включая) в новый список. Несколько примеров:
>>> x = ["first", "second", "third", "fourth"]
>>> x[1:-1]
['second', 'third']
>>> x[0:3]
['first', 'second', 'third']
>>> x[-2:-1]
['third']
Казалось бы, если второй индекс обозначает позицию списка, предшествующую позиции первого индекса, код должен вернуть элементы между этими индексами в обратном порядке, однако на практике этого не происходит. Вместо этого код возвращает пустой список:
>>> x[-1:2]
[]
При сегментировании списка также можно опустить index1 или index2 . Если от-сутствует index1 , сегмент начинается от начала списка, а если отсутствует index2 , сегмент продолжается до конца списка:
>>> x[:3]
['first', 'second', 'third']
>>> x[2:]
['third', 'fourth']
Если опущены оба индекса, новый список распространяется от начала до конца исходного списка, то есть список копируется. Этот прием может пригодиться для создания копии, которую можно изменять без модификации исходного списка: >>> y = x[:]
>>> y[0] = '1 st'
>>> y
['1 st', 'second', 'third', 'fourth']
>>> x
['first', 'second', 'third', 'fourth']
ПОПРОБУЙТЕ.САМИ:.СЕГМЕНТЫ.И.ИНДЕКСЫ Используя то, что вы знаете о функции len() и сегментах списков, как бы вы получили вторую половину списка неизвестного размера? Поэкспериментируйте в сеансе Python и убедитесь в том, что ваше решение работает.
5.3. Модификация списков
Синтаксис индексирования может использоваться как для модификации списков, так и для извлечения из них отдельных элементов. Укажите индекс в левой части оператора присваивания:
Читать дальше