Последовательность — контейнер, элементы которого представляют собой некую последовательность.
Последовательности могут быть как изменяемыми, так и неизменяемыми. Размерность и состав созданной однажды неизменяемой последовательности не может меняться, вместо этого обычно создаётся новая последовательность.

Последовательности поддерживают сравнение (обычно производится лексикографически).
Пользовательские последовательности подчиняются Протоколу последовательностей.

Примеры последовательностей в стандартной библиотеке:

Список (list)изменяемая
Кортеж (tuple)неизменяемая
Диапазон (range)неизменяемая
Строка (str, unicode)неизменяемая
Массив (array.array)изменяемая

Адресация элементов


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

Нумерация индексов начинается с 0 (нуля).

Если по указанному индексу значение отсутствует, возбуждается исключение IndexError.

    my_tuple = (1, 2, 3)
my_tuple[0] # 1
my_tuple[10] # IndexError

Сравнение последовательностей


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

+py3.0 При лексикографическом сравнении для строк используются номера кодовых точек Юникода.

    (1, 2, 3) < (1, 2, 4)
[1, 2, 3] < [1, 2, 4]

'ABC' < 'C' < 'Pascal' < 'Python'

(1, 2, 3, 4) < (1, 2, 4)
(1, 2) < (1, 2, -1)
(1, 2, 3) == (1.0, 2.0, 3.0)
(1, 2, ('aa', 'ab')) < (1, 2, ('abc', 'a'), 4)

# Python 2
[1, 'two'] < ['two', 1] # True
# Python 3
[1, 'two'] < ['two', 1] # TypeError: '<' not supported between instances of 'int' and 'str'

На заметку
Сравнение различных типов внутри последовательности (при помощи > и <) поддерживается, если для типов определены методы сравнения. В противном случае возбуждается TypeError (до +py3.0 порядок был произвольным, типы сравнивались по имени — list < str < tuple и т.д.). Например, численные типы сравниваются по их численному значению, то есть как 0==0.00.


Проход по элементам


Проход по элементам последовательности производится при помощи for in:

    for item in [1, 2, 3]:
print(item)

Количество элементов


Количество элементов в последовательности можно получить, используя функцию len().

    len([1, 2, 3])  # 3

Слияние (конкатенация)


Конкатенация двух последовательностей производится при помощи +.

    a = [3, 2, 1]
b = [4, 5, 6]
a + b # [3, 2, 1, 4, 5, 6]

Повторение


Повторение (множение) элементов последовательностей производится при помощи *.

    a = [1] * 5
a # [1, 1, 1, 1, 1]
b = [1, 2] * 3
b # [1, 2, 1, 2, 1, 2]

Рекомендуемые методы


Пользовательским последовательностям по примеру таковых же из стандартной библиотеки рекомендуется реализовать следующие методы.

Базовые__contains__(), __iter__()
Для изменяемых последовательностейappend(), count(), extend(), index(), insert(), pop(), remove(), reverse(), sort()
Для поддержки слияния и повторения__add__(), __iadd__(), __imul__(), __mul__(), __radd__(), __rmul__()

На заметку
Для перегрузки математических операций (умножение — повторение, а сложение — конкатенация) следует использовать только указанные методы. Прочие методы для работы с числами реализовываться не должны.
Синонимы поиска: Sequence (последовательность), последовательность, последовательности
Статьи раздела
list (список) Список — изменяемая последовательность с упорядоченными элементами.
range (диапазон) Диапазон — неизменяемая последовательность целых чисел.
sequence.index Ищет указанное значение в последовательности.
str (строка) Строка — базовый тип представляющий из себя неизменяемую последовател…
tuple (кортеж) Кортеж — неизменяемая последовательность с упорядоченными элементами.
xrange Диапазон — неизменяемая последовательность целых чисел.
В разделе «Iterable (итерируемый)»: Mapping (отображение) sets (множества)
На заметку
Зарегистрированные пользователи могут публиковать свои мнения относительно Книг, Видео, Статей других авторов и прочего в разделе Обсуждений.