Такой способ построения списков встречается очень часто, потому что данные, которые пользователь захочет сохранить в программе, нередко становятся известными только после запуска программы. Чтобы пользователь мог управлять содержимым списка, начните с определения пустого списка, а затем присоединяйте к нему каждое новое значение.

<p>Вставка элементов в список</p>

Метод insert() позволяет добавить новый элемент в произвольную позицию списка. Для этого следует указать индекс и значение нового элемента.

motorcycles = ['honda', 'yamaha', 'suzuki']

(1) motorcycles.insert(0, 'ducati')

print(motorcycles)

В этом примере в точке (1) значение 'ducati' вставляется в начало списка. Метод insert() выделяет свободное место в позиции 0 и сохраняет в нем значение 'ducati'. Все остальные значения списка при этом сдвигаются на одну позицию вправо:

['ducati', 'honda', 'yamaha', 'suzuki']

<p>Удаление элементов из списка</p>

Нередко возникает необходимость в удалении одного или нескольких элементов из списка. Например, когда игрок сбивает корабль пришельца, этот корабль нужно удалить из списка активных врагов. Или когда пользователь решает удалить свою учетную запись в созданном вами веб-приложении, этот пользователь должен быть убран из списка активных пользователей. Элементы удаляются из списка по позиции или по значению.

<p>Удаление элемента с использованием команды del</p>

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

<p>Удаление элемента с использованием метода pop()</p>

Иногда значение, удаляемое из списка, должно как-то использоваться. Допустим, вы хотите получить координаты 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.

<p>Извлечение элементов из произвольной позиции списка</p>

Вызов 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().

Перейти на страницу:

Все книги серии Библиотека программиста

Похожие книги