УПРАЖНЕНИЯ
Попробуйте написать несколько коротких программ, чтобы получить предварительное
представление о списках Python . Возможно, для упражнений из каждой главы стоит создать
отдельную папку, чтобы избежать путаницы .
3-1 . Имена: сохраните имена нескольких своих друзей в списке с именем names . Выведите
имя каждого друга, обратившись к каждому элементу списка (по одному за раз) .
3-2 . Сообщения: начните со списка, использованного в упражнении 3-1, но вместо вывода
имени каждого человека выведите сообщение . Основной текст всех сообщений должен
быть одинаковым, но каждое сообщение должно включать имя адресата .
3-3 . Собственный список: выберите свой любимый вид транспорта (например, мотоциклы
или машины) и создайте список с примерами . Используйте свой список для вывода утверж-
дений об элементах типа: «Я хотел бы купить мотоцикл Honda» .
Изменение, добавление и удаление элементов
Обычно вы будете создавать динамические списки; это означает, что во время вы-
полнения программы в созданном вами списке будут добавляться и удаляться
элементы. Например, вы можете создать игру, в которой игрок должен стрелять
по кораблям космических захватчиков. Исходный набор кораблей сохраняется
в списке; каждый раз, когда вы сбиваете корабль, он удаляется из списка. Каждый
Индексы начинаются с 0, а не с 1 51
раз, когда на экране появляется новый враг, он включается в список. Длина списка
кораблей будет уменьшаться и увеличиваться по ходу игры.
Изменение элементов в списке
Синтаксис изменения элемента напоминает синтаксис обращения к элементу
списка. Чтобы изменить элемент, укажите имя списка и индекс изменяемого эле-
мента в квадратных скобках; далее задайте новое значение, которое должно быть
присвоено элементу.
Допустим, имеется список мотоциклов, и первым элементом списка хранится
строка
'honda'
. Как изменить значение первого элемента?
motorcycles.py
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
motorcycles[0] = 'ducati'
print(motorcycles)
В точке определяется исходный список, в котором первый элемент содержит
строку
'honda'
. В точке значение первого элемента заменяется строкой
'ducati'
.
Из вывода видно, что первый элемент действительно изменился, а остальные эле-
менты списка сохранили прежние значения:
['honda', 'yamaha', 'suzuki']
['ducati', 'yamaha', 'suzuki']
Изменить можно значение любого элемента в списке, не только первого.
Добавление элементов в список
Новые элементы могут добавляться в списки по разным причинам — например,
для появления на экране новых космических кораблей, включения новых данных
в визуализацию или добавления новых зарегистрированных пользователей на по-
строенный вами сайт. Python предоставляет несколько способов добавления новых
данных в существующие списки.
Присоединение элементов в конец списка
Простейший способ добавления новых элементов в список — присоединение эле-
мента в конец списка. Используя список из предыдущего примера, добавим новый
элемент
'ducati'
:
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
motorcycles.append('ducati')
print(motorcycles)
52 Глава 3 • Списки
Метод
append()
в точке присоединяет строку
'ducati'
в конец списка, другие
элементы в списке при этом остаются неизменными:
['honda', 'yamaha', 'suzuki']
['honda', 'yamaha', 'suzuki', 'ducati']
Метод
append()
упрощает динамическое построение списков. Например, вы може-
те начать с пустого списка и добавлять в него элементы серией команд
append()
.
В следующем примере в пустой список добавляются элементы
'honda'
,
'yamaha'
и
'suzuki'
:
motorcycles = []
motorcycles.append('honda')
motorcycles.append('yamaha')
motorcycles.append('suzuki')
print(motorcycles)
Полученный список выглядит точно так же, как и списки из предыдущих примеров:
['honda', 'yamaha', 'suzuki']
Такой способ построения списков встречается очень часто, потому что данные,
которые пользователь захочет сохранить в программе, нередко становятся из-
вестными только после запуска программы. Чтобы пользователь мог управлять
содержимым списка, начните с определения пустого списка, а затем присоединяйте
к нему каждое новое значение.
Вставка элементов в список
Метод
insert()
позволяет добавить новый элемент в произвольную позицию спи-
ска. Для этого следует указать индекс и значение нового элемента.
motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.insert(0, 'ducati')
print(motorcycles)
В этом примере в точке значение
'ducati'
вставляется в начало списка. Ме-
тод
insert()
выделяет свободное место в позиции 0 и сохраняет в нем значение
'ducati'
. Все остальные значения списка при этом сдвигаются на одну позицию
вправо:
['ducati', 'honda', 'yamaha', 'suzuki']
Удаление элементов из списка
Нередко возникает необходимость в удалении одного или нескольких элементов
из списка. Например, когда игрок сбивает корабль пришельца, этот корабль нужно
удалить из списка активных врагов. Или когда пользователь решает удалить свою
учетную запись в созданном вами веб-приложении, этот пользователь должен быть
Индексы начинаются с 0, а не с 1 53
убран из списка активных пользователей. Элементы удаляются из списка по по-
зиции или по значению.
Удаление элемента с использованием команды del
Если вам известна позиция элемента, который должен быть удален из списка, вос-
пользуйтесь командой
del
.
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
del motorcycles[0]
print(motorcycles)
В точке вызов
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()
удаляет последний элемент из списка, но позволяет работать с ним
после удаления. Удалим мотоцикл из списка:
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
popped_motorcycle = motorcycles.pop()
print(motorcycles)
print(popped_motorcycle)
Сначала в точке определяется и выводится содержимое списка
motorcycles
.
В точке
значение извлекается из списка и сохраняется в переменной с именем
54 Глава 3 • Списки
popped_motorcycle
. Вывод измененного списка в точке показывает, что значе-
ние было удалено из списка. Затем мы выводим извлеченное значение в точке ,
демонстрируя, что удаленное из списка значение остается доступным в программе.
Из вывода видно, что значение
'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']
first_owned = motorcycles.pop(0)
print('The first motorcycle I owned was a ' + first_owned.title() +
'.')
Сначала первый элемент извлекается из списка в точке , а затем в точке вы-
водится сообщение об этом мотоцикле. Программа выводит простое сообщение
о первом мотоцикле:
The first motorcycle I owned was a Honda.
Помните, что после каждого вызова
pop()
элемент, с которым вы работаете, уже
не находится в списке.
Если вы не уверены в том, какой из двух способов выбрать — команду
del
или ме-
тод
pop()
, — то простое правило поможет вам определиться. Если вы собираетесь
просто удалить элемент из списка, никак не используя его, выбирайте команду
del
;
если же вы намерены использовать элемент после удаления из списка, выбирайте
метод
pop()
.
Удаление элементов по значению
Иногда позиция удаляемого элемента неизвестна. Если вы знаете только значение
элемента, используйте метод
remove()
.
Индексы начинаются с 0, а не с 1 55
Допустим, из списка нужно удалить значение
'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("\nA " + too_expensive.title() + " is too expensive for me.")
После определения списка в точке значение
'ducati'
сохраняется в перемен-
ной с именем
too_expensive
в точке . Затем эта переменная сообщает Python,
какое значение должно быть удалено из списка . В точке значение
'ducati'
было удалено из списка, но продолжает храниться в переменной
too_expensive
,
что позволяет вывести сообщение с причиной удаления
'ducati'
из списка мо-
тоциклов:
['honda', 'yamaha', 'suzuki', 'ducati']
['honda', 'yamaha', 'suzuki']
A Ducati is too expensive for me.
Достарыңызбен бөлісу: |