Читать «Язык программирования Python» онлайн - страница 9
Роман Авриевич Сузи
Дополнительные конструкции для изменчивых последовательностей:
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 и т.д.. Отрицательные значения отсчитывают промежутки с конца строки. Для записи срезов используется следующий синтаксис: