Последовательности

Ниже обобщены основные методы последовательностей. Следует напомнить, что последовательности бывают неизменчивыми и изменчивыми. У последних методов чуть больше.

Синтаксис Семантика len(s) Длина последовательности s x in s Проверка принадлежности элемента последовательности. В новых версиях Python можно проверять принадлежность подстроки строке. Возвращает True или False x not in s = not x in s s + s1 Конкатенация последовательностей s*n или n*s Последовательность из n раз повторенной s. Если n < 0, возвращается пустая последовательность. s[i] Возвращает i–й элемент s или len(s)+i–й, если i < 0 s[i:j:d] Срез из последовательности s от i до j с шагом d будет рассматриваться ниже min(s) Наименьший элемент s max(s) Наибольший элемент s

Дополнительные конструкции для изменчивых последовательностей:

s[i] = x i–й элемент списка s заменяется на x s[i:j:d] = t Срез от i до j (с шагом d) заменяется на (список) t del s[i:j:d] Удаление элементов среза из последовательности

Некоторые методы для работы с последовательностями

В таблице приведен ряд методов изменчивых последовательностей (например, списков).

Метод Описание append(x) Добавляет элемент в конец последовательности count(x) Считает количество элементов, равных x extend(s) Добавляет к концу последовательности последовательность index(x) Возвращает наименьшее i, такое, что s[i] == x. Возбуждает исключение ValueError, если x не найден в s insert(i, x) Вставляет элемент x в i–й промежуток pop(i) Возвращает i–й элемент, удаляя его из последовательности reverse() Меняет порядок элементов s на обратный sort([cmpfunc]) Сортирует элементы s. Может быть указана своя функция сравнения cmpfunc

Взятие элемента по индексу и срезы

Здесь же следует сказать несколько слов об индексировании последовательностей и выделении подстрок (и вообще — подпоследовательностей) по индексам. Для получения отдельного элемента последовательности используются квадратные скобки, в которых стоит выражение, дающее индекс. Индексы последовательностей в Python начинаются с нуля. Отрицательные индексы служат для отсчета элементов с конца последовательности (-1 — последний элемент). Пример проясняет дело:

>>> s = [0, 1, 2, 3, 4]

>>> print s[0], s[-1], s[3]

0 4 3

>>> s[2] = -2

>>> print s

[0, 1, -2, 3, 4]

>>> del s[2]

>>> print s

[0, 1, 3, 4]

Примечание:

Удалять элементы можно только из изменчивых последовательностей и желательно не делать этого внутри цикла по последовательности.

Несколько интереснее обстоят дела со срезами. Дело в том, что в Python при взятии среза последовательности принято нумеровать не элементы, а промежутки между ними. Поначалу это кажется необычным, тем не менее, очень удобно для указания произвольных срезов. Перед нулевым (по индексу) элементом последовательности промежуток имеет номер 0, после него — 1 и т.д.. Отрицательные значения отсчитывают промежутки с конца строки. Для записи срезов используется следующий синтаксис:

последовательность[нач:кон:шаг]

где нач — промежуток начала среза, кон — конца среза, шаг — шаг. По умолчанию нач=0, кон=len(последовательность), шаг=1, если шаг не указан, второе двоеточие можно опустить.

А теперь пример работы со срезами:

>>> s = range(10)

>>> s

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> s[0:3]

[0, 1, 2]

>>> s[-1:]

[9]

>>> s[::3]

[0, 3, 6, 9]

>>> s[0:0] = [-1, -1, -1]

>>> s

[-1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> del s[:3]

>>> s

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

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

Больше книг — больше знаний!

Заберите 30% скидку новым пользователям на все книги Литрес с нашим промокодом

ПОЛУЧИТЬ СКИДКУ