Книга «Изучаем Python»



Pdf көрінісі
бет40/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   36   37   38   39   40   41   42   43   ...   238
УПРАЖНЕНИЯ

Попробуйте  написать  несколько  коротких  программ,  чтобы  получить  предварительное 

представление о списках 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.





Достарыңызбен бөлісу:
1   ...   36   37   38   39   40   41   42   43   ...   238




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет