>>> x = [1, 2, 3, 4]
>>> x[1] = "two"
>>> x
[1, 'two', 3, 4]
Синтаксис сегментов может использоваться и в этом случае. Команда вида lista[index1:index2] = listb заменяет все элементы lista между index1 и index2 элементами из listb . Список listb может содержать больше или меньше элементов, чем удаляется из lista ; в этом случае длина lista изменяется. Сегментное при-сваивание может использоваться для выполнения разных операций:
[1, 2, 3, 4, 5, 6, 7]
>>> x[:0] = [-1, 0]
Присоединяет список к началу списка
>>> x
[-1, 0, 1, 2, 3, 4, 5, 6, 7]
>>> x[1:-1] = []
Удаляет элементы из списка
>>> x
[-1, 7]
Присоединение одного элемента к списку — операция настолько распространенная, что для нее был определен специальный метод append : >>> x = [1, 2, 3]
>>> x.append("four")
>>> x
[1, 2, 3, 'four']
При попытке присоединения одного списка к другому может возникнуть пробле-ма — список будет присоединен как один элемент основного списка: >>> x = [1, 2, 3, 4]
>>> y = [5, 6, 7]
>>> x.append(y)
>>> x
[1, 2, 3, 4, [5, 6, 7]]
Метод extend похож на метод append , но он предназначен для добавления элементов одного списка к другому:
>>> x = [1, 2, 3, 4]
>>> y = [5, 6, 7]
>>> x.extend(y)
>>> x
[1, 2, 3, 4, 5, 6, 7]
Также существует специальный метод insert , который вставляет новый элемент списка между двумя существующими элементами или в начало списка. Метод insert используется как метод списков и получает два дополнительных аргумента. Первый дополнительный аргумент определяет индекс позиции списка, в которую будет вставлен новый элемент, а второй — сам новый элемент: >>> x = [1, 2, 3]
>>> x.insert(2, "hello")
>>> print(x)
[1, 2, 'hello', 3]
>>> x.insert(0, "start")
>>> print(x)
['start', 1, 2, 'hello', 3]
Метод insert интерпретирует индексы так, как описано в разделе 5.2, но в большин-стве случаев проще представлять вызов list.insert(n, elem) как вставку elem перед
n -м элементом списка list . Метод insert создан исключительно для удобства. Все, что можно сделать c методом insert , также можно сделать посредством присваивания сегментов. А именно конструкция list.insert(n,elem) эквивалентна list[n:n] = [elem] , где n — неотрицательное число. Использование insert несколько упрощает чтение кода, к тому же метод insert поддерживает отрицательные индексы: >>> x = [1, 2, 3]
>>> x.insert(-1, "hello")
>>> print(x)
[1, 2, 'hello', 3]
Для удаления элементов списков или сегментов рекомендуется использовать коман ду del . Эта команда тоже не делает ничего такого, чего нельзя было бы сделать при по-мощи присваивания сегментов, но она лучше запоминается и упрощает чтение кода: >>> x = ['a', 2, 'c', 7, 9, 11]
>>> del x[1]
>>> x
['a', 'c', 7, 9, 11]
>>> del x[:2]
>>> x
[7, 9, 11]
В общем случае команда del list[n] эквивалентна list[n:n+1] = [] , тогда как команда del list[m:n] делает то же самое, что list[m:n] = [] . Метод remove не является обратным по отношению к insert . Если метод insert вставляет элемент в заданную позицию, remove ищет первый экземпляр заданного значения в списке и удаляет это значение из списка: >>> x = [1, 2, 3, 4, 3, 5]
>>> x.remove(3)
>>> x
[1, 2, 4, 3, 5]
>>> x.remove(3)
>>> x
[1, 2, 4, 5]
>>> x.remove(3)
Traceback (innermost last):
File "", line 1, in ?
ValueError: list.remove(x): x not in list
Если метод remove не находит удаляемых элементов, он выдает ошибку. Вы можете перехватить ошибку, используя средства обработки исключений Python, или же предотвратить саму проблему, проверяя наличие элементов в списке оператором in перед тем, как пытаться их удалить.
Метод reverse — специализированный метод изменения списка — эффективно переставляет элементы списка в обратном порядке «на месте»: >>> x = [1, 3, 5, 6, 7]
>>> x.reverse()
>>> x
[7, 6, 5, 3, 1]
ПОПРОБУЙТЕ.САМИ:.МОДИФИКАЦИЯ.СПИСКОВ Допустим, список состоит из 10 элементов. Как переместить три последних элемента из конца в начало списка без нарушения их исходного порядка?
5.4. Сортировка списков
Для сортировки списков используется встроенный метод Python sort : >>> x = [3, 8, 4, 0, 2, 1]
>>> x.sort()
>>> x
[0, 1, 2, 3, 4, 8]
Метод выполняет сортировку «на месте», то есть с изменением сортируемого списка. Если вы хотите отсортировать список без изменения исходного списка, возможны два варианта: либо использовать встроенную функцию sorted() (раз-дел 5.4.2), либо создать копию списка и отсортировать ее. >>> x = [2, 4, 1, 3]
>>> y = x[:]
>>> y.sort()
>>> y
[1, 2, 3, 4]
>>> x
[2, 4, 1, 3]
Сортировка также работает со строками:
>>> x = ["Life", "Is", "Enchanting"]
Читать дальше