Простой Python. Современный стиль программирования (Любанович) - страница 36

Можно объединить один список с другим с помощью метода extend(). Предположим, что добрый человек дал нам новый список братьев Маркс, который называется others, и мы хотим добавить его в основной список marxes:

>>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo']

>>>> others = ['Gummo', 'Karl']

>>>> marxes.extend(others)

>>>> marxes

>['Groucho', 'Chico', 'Harpo', 'Zeppo', 'Gummo', 'Karl']

Можно также использовать оператор +=:

>>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo']

>>>> others = ['Gummo', 'Karl']

>>>> marxes += others

>>>> marxes

>['Groucho', 'Chico', 'Harpo', 'Zeppo', 'Gummo', 'Karl']

Если бы мы использовали метод append(), список others был бы добавлен как один элемент списка, вместо того чтобы объединить его элементы со списком marxes:

>>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo']

>>>> others = ['Gummo', 'Karl']

>>>> marxes.append(others)

>>>> marxes

>['Groucho', 'Chico', 'Harpo', 'Zeppo', ['Gummo', 'Karl']]

Это снова демонстрирует, что список может содержать элементы разных типов. В этом случае — четыре строки и список из двух строк.

Добавление элемента с помощью функции insert()

Функция append() добавляет элементы только в конец списка. Когда вам нужно добавить элемент в заданную позицию, используйте функцию insert(). Если вы укажете позицию 0, элемент будет добавлен в начало списка. Если позиция находится за пределами списка, элемент будет добавлен в конец списка, как и в случае с функцией append(), поэтому вам не нужно беспокоиться о том, что Python сгенерирует исключение:

>>>> marxes.insert(3, 'Gummo')

>>>> marxes

>['Groucho', 'Chico', 'Harpo', 'Gummo', 'Zeppo']

>>>> marxes.insert(10, 'Karl')

>>>> marxes

>['Groucho', 'Chico', 'Harpo', 'Gummo', 'Zeppo', 'Karl']

Удаление заданного элемента с помощью функции del

Наши консультанты только что проинформировали нас о том, что Гуммо (Gummo) был одним из братьев Маркс, а Карл (Karl) — не был. Отменим последний ввод:

>>>> del marxes[-1]

>>>> marxes

>['Groucho', 'Chico', 'Harpo', 'Gummo', 'Zeppo']

Когда вы удаляете заданный элемент, все остальные элементы, которые идут следом за ним, смещаются, чтобы занять место удаленного элемента, а длина списка уменьшается на единицу. Если вы удалите 'Harpo' из последней версии списка, то получите такой результат:

>>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Gummo', 'Zeppo']

>>>> marxes[2]

>'Harpo'

>>>> del marxes[2]

>>>> marxes

>['Groucho', 'Chico', 'Gummo', 'Zeppo']

>>>> marxes[2]

>'Gummo'


del является оператором Python, а не методом списка — нельзя написать marxes[-2].del(). Он похож на противоположную присваиванию (=) операцию: открепляет имя от объекта Python и может освободить память объекта, если это имя являлось последней ссылкой на нее.