Читаем Изучаем Python онлайн бесплатно
Такой способ построения списков встречается очень часто, потому что данные, которые пользователь захочет сохранить в программе, нередко становятся известными только после запуска программы. Чтобы пользователь мог управлять содержимым списка, начните с определения пустого списка, а затем присоединяйте к нему каждое новое значение.
Метод insert() позволяет добавить новый элемент в произвольную позицию списка. Для этого следует указать индекс и значение нового элемента.
motorcycles = ['honda', 'yamaha', 'suzuki']
(1) motorcycles.insert(0, 'ducati')
print(motorcycles)
В этом примере в точке (1) значение 'ducati' вставляется в начало списка. Метод insert() выделяет свободное место в позиции 0 и сохраняет в нем значение 'ducati'. Все остальные значения списка при этом сдвигаются на одну позицию вправо:
['ducati', 'honda', 'yamaha', 'suzuki']
Нередко возникает необходимость в удалении одного или нескольких элементов из списка. Например, когда игрок сбивает корабль пришельца, этот корабль нужно удалить из списка активных врагов. Или когда пользователь решает удалить свою учетную запись в созданном вами веб-приложении, этот пользователь должен быть убран из списка активных пользователей. Элементы удаляются из списка по позиции или по значению.
Если вам известна позиция элемента, который должен быть удален из списка, воспользуйтесь командой 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, становится недоступным.
Иногда значение, удаляемое из списка, должно как-то использоваться. Допустим, вы хотите получить координаты 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().




