Присвоение нового значения элементу, выбранному по индексу




Использование списков

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

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

Чтобы увидеть, как списки работают на практике, напишем программу «Арсенала героя 3.0». На прошлых уроках мы писали с вами программу «Арсенал героя 2.0». Начальная часть «Арсенала героя 3.0» выдает такие же результаты, как и более ранняя версия. Да и код в ней практически тот же самый; разница лишь в том, что вместо кортежей везде использованы списки. Следующий за ней код демонстрирует полезные следствия изменяемости списков и некоторые новые приемы работы с последовательностями.

Создание списка

В первых строках кода создается новый список, который становится значением переменной inventory; система выводит элементы списка на экран. Единственное отличие от «Арсенала героя 2.0» состоит в том, что мы заключаем элементы списка в квадратные, а не в круглые, скобки и получаем список, а не кортеж.

#Арсенал героя 3.0

# Демонстрирует работу со списками

# создадим список с несколькими элементами и выведем его с помощью цикла for

inventory = ["меч", "кольчуга", "щит", "целебное снадобье"]

print (" \n Итaк, в вашем арсенале:")

for item in inventory:

print (item)

input (" \n Нажмите Enter. чтобы продолжить.")

 

Применение функции len() к спискам

Следующий код побуквенно совпадает с аналогичным кодом в «Арсенале героя 2.0». Функция len() работает со списками так же, как и с кортежами.

# найдем длину списка print ("Сейчас в вашем распоряжении", len(inventory), "предмета/ -ов. ")input(" \n Нажмите Enter. чтобы продолжить.")

Применение оператора in к спискам

Этот код тоже без изменений позаимствован из предыдущей версии. Оператор in не видит разницы между кортежем и списком.

# проверка на принадлежность списку с помощью in if "целебное снадобье" in inventory: print ("Bы еще поживете и повоюете.")

 

Индексация списков

Опять ничего нового по сравнению с версией 2.0. Для доступа к элементу списка, как прежде, надо заключить в квадратные скобки номер позиции, в которой находится элемент.

# вывод одного элемента с определенным индексом index = int(input(" \n Bвeдитe индекс одного из предметов арсенала: ")) print ("Под индексом", index, "в арсенале находится", inventory[index])

 

Срезы списков

Готовы ли вы поверить в то, что срезы списков представляют собой то же самое, что и срезы кортежей? Опять же указываем начальную и конечную позиции через двоеточие в квадратных скобках:

# отобразим срез start = int(input(" \n Bвeдитe начальный индекс среза: "))finish = int(input("Bвeдитe конечный индекс среза: ")) print ("Cpeз inventory[", start, ":", finish, "] - это", end = " ") print (inventory[start:finish])input(" \n Haжмитe Enter. чтобы продолжить.")

 

Сцепление списков

Сцепление списков ничем не отличается от сцепления кортежей. Разница здесь будет только в том, что присвоим переменной chest мы список, а не кортеж. Это небольшое, но существенное отличие, потому что конкатенации можно подвергнуть лишь однотипные последовательности.

# соединим два списка chest = ["золото", "драгоценные камни"] print ("Bы нашли ларец. Вот что в нем есть:") print (chest) print ("Bы приобщили содержимое ларца к своему арсеналу.")inventory += chest print ("Теперь в вашем распоряжении: ") print (inventory)input(" \n\n Haжмитe Enter. чтобы продолжить.")

Изменяемость списков

Надо полагать, вас уже утомили бесчисленные фразы, общий смысл которых заключается в том, что список функционирует так же, как кортеж. До сих пор, если не считать замены круглых скобок квадратными, списки не проявили себя ничем новым по сравнению с кортежами. Но разница все же есть, и она огромна. Повторю: списки изменяемы. Отсюда следует, что со списками можно проделывать множество трюков, для которых кортежи непригодны.

Присвоение нового значения элементу, выбранному по индексу

Поскольку список изменяем, то любому его элементу можно присвоить новое значение:

# присваиваем значение элементу по индексу print ("Bы обменяли меч на арбалет.")inventory[0] = "арбалет" print ("Teпepь ваш арсенал содержит следующие предметы:") print (inventory)input(" \n Haжмитe Enter. чтобы продолжить.")

 

В этом коде элементу списка inventory, имеющему индекс 0, присваивается значение "арбалет":

inventory[0] = "арбалет"

 

Это новое строковое значение замещает прежнее ("меч"). Как стал выглядеть список, показывает функция print, с помощью которой на экран выводится новая версия inventory.

ЛОВУШКА. Можно приписать новое значение существующему элементу списка, выбрав его по индексу, но создать этим способом новый элемент нельзя. Попытка приписать какое-либо значение элементу, которого ранее не существовало, вызовет ошибку.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2021-02-02 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: