Можно объединить один список с другим с помощью метода 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 и может освободить память объекта, если это имя являлось последней ссылкой на нее.