Глава 3 • Списки
Удаление элемента с использованием метода pop()
Иногда значение, удаляемое из списка, должно как-то использоваться. Допустим,
вы хотите получить координаты
x
и
y
только что сбитого корабля пришельцев, что-
бы изобразить взрыв в этой позиции. В веб-приложении пользователь, удаленный
из списка активных участников, может быть добавлен в список неактивных, и т. д.
Метод
pop()
удаляет последний элемент из списка, но позволяет работать с ним
после удаления. Удалим мотоцикл из списка:
❶
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
❷
popped_motorcycle = motorcycles.pop()
❸
print(motorcycles)
❹
print(popped_motorcycle)
Сначала в точке
определяется и выводится содержимое списка
motorcycles
.
В точке
значение извлекается из списка и сохраняется в переменной с именем
popped_motorcycle
. Вывод измененного списка в точке
показывает, что значе-
ние было удалено из списка. Затем мы выводим извлеченное значение в точке
,
демонстрируя, что удаленное из списка значение остается доступным в программе.
Из вывода видно, что значение
'suzuki'
, удаленное в конце списка, теперь хранится
в переменной
popped_motorcycle
:
['honda', 'yamaha', 'suzuki']
['honda', 'yamaha']
suzuki
Для чего может понадобиться метод
pop()
? Представьте, что мотоциклы в списке
хранятся в хронологическом порядке в соответствии с датой их покупки. В таком
случае команда
pop()
может использоваться для вывода сообщения о последнем
купленном мотоцикле:
motorcycles = ['honda', 'yamaha', 'suzuki']
last_owned = motorcycles.pop()
print(f"The last motorcycle I owned was a {last_owned.title()}.")
Программа выводит простое сообщение:
The last motorcycle I owned was a Suzuki.
Извлечение элементов из произвольной позиции списка
Вызов
pop()
может использоваться для удаления элемента в произвольной позиции
списка; для этого следует указать индекс удаляемого элемента в круглых скобках.
motorcycles = ['honda', 'yamaha', 'suzuki']
❶
first_owned = motorcycles.pop(0)
❷
print(f"The first motorcycle I owned was a {first_owned.title()}.")
Изменение, добавление и удаление элементов
57
Сначала первый элемент извлекается из списка в точке
, а затем в точке
вы-
водится сообщение об этом мотоцикле. Программа выводит простое сообщение
о первом мотоцикле:
The first motorcycle I owned was a Honda.
Помните, что после каждого вызова
pop()
элемент, с которым вы работаете, уже
не находится в списке.
Если вы не уверены в том, какой из двух способов выбрать, команду
del
или метод
pop()
, — простое правило поможет вам определиться: если вы собираетесь просто
удалить элемент из списка, никак не используя его, выбирайте команду
del
; если
же вы намерены использовать элемент после удаления из списка, выбирайте ме-
тод
pop()
.
Удаление элементов по значению
Иногда позиция удаляемого элемента неизвестна. Если вы знаете только значение
элемента, используйте метод
remove()
.
Допустим, из списка нужно удалить значение
'ducati'
:
motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motorcycles)
❶
motorcycles.remove('ducati')
print(motorcycles)
Код в точке
приказывает Python определить, в какой позиции списка находится
значение
'ducati'
, и удалить этот элемент:
['honda', 'yamaha', 'suzuki', 'ducati']
['honda', 'yamaha', 'suzuki']
Метод
remove()
также может использоваться для работы со значением, которое
удаляется из списка. Следующая программа удаляет значение
'ducati'
и выводит
причину удаления:
❶
motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motorcycles)
❷
too_expensive = 'ducati'
❸
motorcycles.remove(too_expensive)
print(motorcycles)
❹
print(f"\nA {too_expensive.title()} is too expensive for me.")
После определения списка в точке
значение
'ducati'
сохраняется в перемен-
ной с именем
too_expensive
в точке
. Затем эта переменная сообщает Python,
какое значение должно быть удалено из списка
. В точке
значение
'ducati'
было удалено из списка, но продолжает храниться в переменной
too_expensive
,
|