Такой способ построения списков встречается очень часто, потому что данные, которые пользователь захочет сохранить в программе, нередко становятся известными только после запуска программы. Чтобы пользователь мог управлять содержимым списка, начните с определения пустого списка, а затем присоединяйте к нему каждое новое значение.
Вставка элементов в список
Метод insert() позволяет добавить новый элемент в произвольную позицию списка. Для этого следует указать индекс и значение нового элемента.
motorcycles = ['honda', 'yamaha', 'suzuki']
(1) motorcycles.insert(0, 'ducati')
print(motorcycles)
В этом примере в точке (1) значение 'ducati' вставляется в начало списка. Метод insert() выделяет свободное место в позиции 0 и сохраняет в нем значение 'ducati'. Все остальные значения списка при этом сдвигаются на одну позицию вправо:
['ducati', 'honda', 'yamaha', 'suzuki']
Удаление элементов из списка
Нередко возникает необходимость в удалении одного или нескольких элементов из списка. Например, когда игрок сбивает корабль пришельца, этот корабль нужно удалить из списка активных врагов. Или когда пользователь решает удалить свою учетную запись в созданном вами веб-приложении, этот пользователь должен быть убран из списка активных пользователей. Элементы удаляются из списка по позиции или по значению.
Удаление элемента с использованием команды del
Если вам известна позиция элемента, который должен быть удален из списка, воспользуйтесь командой del.
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
(1) del motorcycles[0]
print(motorcycles)
В точке (1) вызов del удаляет первый элемент, 'honda', из списка motorcycles:
['honda', 'yamaha', 'suzuki']
['yamaha', 'suzuki']
Команда del позволяет удалить элемент из любой позиции списка, если вам известен его индекс. Например, вот как из списка удаляется второй элемент 'yamaha':
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
del motorcycles[1]
print(motorcycles)
Второй элемент исчез из списка:
['honda', 'yamaha', 'suzuki']
['honda', 'suzuki']
В обоих примерах значение, удаленное из списка после использования команды del, становится недоступным.
Удаление элемента с использованием метода pop()
Иногда значение, удаляемое из списка, должно как-то использоваться. Допустим, вы хотите получить координаты x и y только что сбитого корабля пришельцев, чтобы изобразить взрыв в этой позиции. В веб-приложении пользователь, удаленный из списка активных участников, может быть добавлен в список неактивных и т.д.
Метод pop() удаляет последний элемент из списка, но позволяет работать с ним после удаления. Удалим мотоцикл из списка:
(1) motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
(2)popped_motorcycle = motorcycles.pop()
(3)print(motorcycles)
(4)print(popped_motorcycle)
Сначала в точке (1) определяется и выводится содержимое списка motorcycles. В точке (2) значение извлекается из списка и сохраняется в переменной с именем popped_motorcycle. Вывод измененного списка в точке (3) показывает, что значение было удалено из списка. Затем мы выводим извлеченное значение в точке (4), демонстрируя, что удаленное из списка значение остается доступным в программе.
Из вывода видно, что значение 'suzuki', удаленное в конце списка, теперь хранится в переменной popped_motorcycle:
['honda', 'yamaha', 'suzuki']
['honda', 'yamaha']
suzuki
Для чего может понадобиться метод pop()? Представьте, что мотоциклы в списке хранятся в хронологическом порядке в соответствии с датой их покупки. В таком случае команда pop() может использоваться для вывода сообщения о последнем купленном мотоцикле:
motorcycles = ['honda', 'yamaha', 'suzuki']
last_owned = motorcycles.pop()
print("The last motorcycle I owned was a " + last_owned.title() + ".")
Программа выводит простое сообщение:
The last motorcycle I owned was a Suzuki.
Извлечение элементов из произвольной позиции списка
Вызов pop() может использоваться для удаления элемента в произвольной позиции списка; для этого следует указать индекс удаляемого элемента в круглых скобках.
motorcycles = ['honda', 'yamaha', 'suzuki']
(1) first_owned = motorcycles.pop(0)
(2)print('The first motorcycle I owned was a ' + first_owned.title() + '.')
Сначала первый элемент извлекается из списка в точке (1) , а затем в точке (2) выводится сообщение об этом мотоцикле. Программа выводит простое сообщение о первом мотоцикле:
The first motorcycle I owned was a Honda.
Помните, что после каждого вызова pop() элемент, с которым вы работаете, уже не находится в списке.
Если вы не уверены в том, какой из двух способов выбрать — команду del или метод pop(), — то простое правило поможет вам определиться. Если вы собираетесь просто удалить элемент из списка, никак не используя его, выбирайте команду del; если же вы намерены использовать элемент после удаления из списка, выбирайте метод pop().