Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на языке Python. Учебное пособие.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
Примечание. Не сохраняйте данные в переменной, если не планируете
Нежелательное использование
Рациональное использование
x = 10
>> 10
print(100)
Пример вызова метода upper
Пример вызова метода replace
"Hello".upper()
>> 'HELLO'
"Hello".replace("e", "@")
>> 'H@llo'
дальнейшее ее использование. Ниже показан пример рационального использо­вания пространства переменных.
print(x)
переменной
>> 100
переменной

4. Контейнеры

Кроме объектов, которые хранились в переменных, их можно сохранять в так называемых контейнерах. Контейнер – это еще один способ хранения набора объектов в памяти. Иначе говоря, контейнер – это набор некоторого ко­личества элементов, упакованных в него определённым образом. Наиболее по­пулярными контейнерами являются списки, кортежи и словари. Списки и кор­тежи представляют собой последовательности, а словари – отображения.

Методы

В Python существует понятие – методы, которые связаны с определенным типом данных, и в отличие от функций методы вызываются с объектами. Мето­дам, как и функциям, можно передавать параметры.

Списки

Одним из наиболее часто используемых видов контейнеров является спи­сок (list). Список представляет собой последовательность объектов, которые
хранятся в определенном порядке.
31
Пример создания пустого списка
list
Пример создания пустого списка
fruit = list()
>> []
fruit = []
>> []
Признаком списка являются квадратные скобки. Для создания списка ис-
пользуются два способа. Можно создать пустой список с помощью функции list или квадратных скобок, в которых ничего не помещено.
с помощью функции
fruit
с помощью квадратных скобок
fruit
Список Python можно создать, поместив элементы списка в квадратные
скобки, и разделить их запятыми.
fruit = ["Apple", "Orange", "Peach"] fruit
>> ['Apple', 'Orange', 'Peach']
Особо подчеркнем, что элементы в списке хранятся в определенном по-
рядке. В данном примере элемент Apple – первый элемент (начало списка), Orange – второй и Peach – третий (конец списка). В список можно добавлять элементы с помощью метода append. При этом каждый новый элемент добав­ляется в конец списка.
fruit = ["Apple", "Orange", "Peach"] fruit.append("Banana") fruit.append("Melon") fruit
>> ['Apple', 'Orange', 'Peach', 'Banana', 'Melon']
В списке можно хранить разные типы элементов.
random = [] random.append(True) random.append(100) random.append(1.1)
32
random.append("Hello") random
>> [True, 100, 1.1, 'Hello']
Элементы в строках, списках и кортежах можно перебирать. Этот процесс называется итерированием (перебором), а объекты – итерируемыми. Иначе говоря, итерируемый объект (iterable) – это объект, который способен возвра­щать элементы по одному. Кроме того, это объект, из которого можно получить итератор (от англ. iterator – перечислитель) – интерфейс, предоставляющий до­ступ к элементам коллекции (массива или контейнера) и навигацию по ним.
Каждый элемент в списке имеет свой индекс, то есть порядковый номер, причем индексы начинаются с нуля, а не с единицы. Так, элемент Apple в при­мере, приведенном выше, имеет индекс 0, Orange – 1, а Peach – 2.
К любому элементу списка можно обратиться по его индексу. Синтаксис обращения имеет вид имя_списка[индекс].
fruit = ["Apple", "Orange", "Peach"] fruit[0] fruit[1] fruit[2]
>> 'Apple' >> 'Orange' >> 'Peach'
При попытке доступа к несуществующему индексу программа выдаст ис­ключение.
colors = ["blue", "green", "yellow"] colors[5]
>> IndexError: list index out of range
Списки изменяемы, т.е. в них можно добавлять и удалять объекты. Чтобы в списке изменить объект, нужно присвоить его индекс новому объекту.
colors = ["blue", "green", "yellow"] colors colors[2] = "red" colors
33
>> ['blue', 'green', 'yellow'] >> ['blue', 'green', 'red']
Для удаления последнего элемента списка используют метод pop, но
необходимо помнить, что с пустым списком метод не работает и в случае ошибки программа генерирует исключение.
colors = ["blue", "green", "yellow"] colors item = colors.pop() item colors
>> ['blue', 'green', 'yellow'] >> 'yellow' >> ['blue', 'green']
Списки можно соединить с помощью операции конкатенации (сложения).
colors1 = ["blue", "green", "yellow"] colors2 = ["orange", "pink", "black"] colors1 + colors2
>> ['blue', 'green', 'yellow', 'orange', 'pink', 'black']
Наличие элемента в списке проверяется ключевым словом in, а отсутст-
вие – ключевым словом not.
colors = ["blue", "green", "yellow"] "green" in colors
>> True
colors = ["blue", "green", "yellow"] "black" not in colors
>> True
Длину списка можно определить с помощью уже упоминавшейся выше
функции len.
len(colors)
>> 3
34
Пример. Рассматривается программа с помощью встроенной функции
Способ 1. Литеральное объявление:
Способ 2. Через функцию tuple():
my_tuple = ()
my_tuple = tuple()
input предлагает угадать цвет. При правильном угадывании программа под-
тверждает догадку, а в противном случае предлагает угадать вновь.
colors = ["purple", "orange", "green"] guess = input("Угадайте цвет:") if guess in colors: print("Вы угадали!") else: print("Неправильно! Попробуйте еще.")
>> Угадайте цвет:

Кортежи

Кортеж (tuple) – это еще один вид последовательности, в котором объекты разделены запятыми и хранятся в определенном порядке. По своей природе они аналогичны спискам, но, в отличие от них, являются неизменяемыми, то есть после объявления кортежа его элементы нельзя изменять, добавлять или уда­лять. Элементами кортежа могут быть объекты любых типов. Кортеж записы­вается в круглых скобках. Кортежи можно создавать двумя способами.
my_tuple
>> ()
my_tuple
>> ()
Пример создания кортежа:
rndm = ("M. Jackson", 1958, True) rndm
>> ('M. Jackson', 1958, True)
Для объявления кортежа, включающего один единственный элемент, нуж­но использовать завершающую запятую. Это необходимо, чтобы отличать кор­теж от числа в скобках:
# это кортеж ("self_taught",)
35
# это не кортеж (9) + 1
>> ('self_taught',) >> 10
Как было указано выше, после объявления кортежа его элементы нельзя
изменять, добавлять или удалять. В противном случае будет сгенерировано ис­ключение.
dys = ("1984", "О дивный новый мир", "451 градус по Фаренгейту") dys[1] = "Рассказ служанки"
>> TypeError: 'tuple' object does not support item as­signment
Любой элемент кортежа можно получить по его индексу.
dys = ("1984", "О дивный новый мир", "451 градус по Фаренгейту") dys[2]
>> '451 градус по Фаренгейту'
Проверка наличия элемента в кортеже осуществляется ключевым словом
in.
dys = ("1984", "О дивный новый мир", "451 градус по Фаренгейту") "1984" in dys
>> True
Проверка отсутствия элемента в кортеже осуществляется ключевыми сло-
вами not in.
dys = ("1984", "О дивный новый мир", "451 градус по Фаренгейту")
36
"Рассказ служанки" not in dys
Способ 1. Литеральное объявление:
Способ 2. Через функцию dict():
my_dict = {}
>> {}
my_dict = dict()
>> {}
>> True
Заметим, что выражения abc_tuple = (5, 6, 7) и abc_tuple = 5, 6, 7 тожде­ственны.
После знакомства с кортежами напрашивается вполне естественный во­прос, зачем использовать кортеж вместо списка. Смысл в том, что свойство не­изменяемости, это то, что выгодно отличает кортеж от списка и в некоторых случаях является совершенно необходимым, например, для хранения географи­ческих координат, которые являются константами. Кроме того, кортежи, в от­личие от списков, используются как ключи словарей.

Словари

Еще одним типом контейнера является структура, называемая словарем. Аналогия для словаря в языке Python – обычный толковый словарь, где каждо­му отдельному слову (ключу) соответствует его определение (значение). От- личительной чертой словарей является то, что они не хранят объекты в опре­деленном порядке. В словари можно добавлять новые пары ключ-значение, то есть словари являются изменяемыми структурами. Для объявления слова­рей используются фигурные скобки {}. Словари можно создавать двумя спо­собами.
my_dict
my_dict
При формировании словарей в них можно добавлять пары ключ-значение. Ключ от значения отделяется двоеточием. Пары ключ-значение отделяются за­пятыми. При наличии лишь одной пары ключ-значение запятая после нее не ставится.
fruits = {"Apple": "red", "Banana":
37
"yellow"} fruits
>> {'Apple': 'red', 'Banana': 'yellow'}
В словарь можно добавлять пары ключ-значение, используя конструкцию имя_словаря[ключ] = значение. Поиск значений осуществляется с по- мощью ключа. Для этого используется синтаксис имя_словаря[ключ].
facts = dict()
# add a value facts["код"] = "смешной" # look up a key facts["код"]
# add a value facts["Билл"] = "Гейтс" # look up a key facts["Билл"]
# add a value facts["основание"] = 1776 # look up a key facts["основание"]
>> 'смешной' >> 'Гейтс'
>> 1776
Значения словаря могут меняться, а ключ должен быть неизменяемым. В качестве ключа могут быть кортеж и строка, но не список или словарь.
Наличие ключа определяется с помощью ключевого слова in, однако его запрещается использовать для проверки наличия в словаре значения.
bill = dict({"Билл Гейтс": "инвестор"}) "Билл Гейтс" in bill
>> True
38
При попытке доступа к ключу, которого нет в словаре, программой будет
выдано исключение.
Отсутствие ключа определяется с помощью ключевых слов not in.
bill = dict({"Билл Гейтс": "инвестор"}) "Билл Дорз" not in bill
>> True
Ключевое слово del позволяет удалить пару ключ-значение из словаря.
books = {"Дракула": "Стокер", "1984": "Оруэлл", "Процесс": "Кафка"} del books["Процесс"] books
>> {'Дракула': 'Стокер', '1984': 'Оруэлл'}
Пример. Программа, использующая словарь.
rhymes = {"1": "смех", "2": "синий", "3": "я", "4": "этаж", "5": "жизнь" } n = input("введите число:") if n in rhymes: rhyme = rhymes[n] print(rhyme) else: print("Не найдно.")
>> введите число:
Программа с помощью ключа, который вводит пользователь, ищет в сло­варе rhymes название песни, предварительно осуществляя проверку на нали­чие ключа в словаре.
39

Контейнеры внутри контейнеров

Контейнеры могут сохраняться в других контейнерах. Это справедливо для
всех видов контейнеров, в частности для списков.
lists = [] rap = ["Баста", "Кравц", "Злой дух", "25-17"] rock = ["Наутилус Помпилиус", "Кино", "Ария"] djs = ["Paul Oakenfold", "Tiesto"] lists.append(rap) lists.append(rock) lists.append(djs) print(lists)
>> [['Баста', 'Кравц', 'Злой дух', '25-17'], ['Наутилус Помпилиус', 'Кино', 'Ария'], ['Paul Oakenfold', 'Tie­sto']]
Список lists имеет три индекса: первый – это список рэперов, второй – рокеров, третий – диджеев. Доступ к спискам осуществляется с помощью ин­дексов. Для предыдущего примера доступ к первому списку имеет вид
rap = lists[0] print(rap)
>> ['Баста', 'Кравц', 'Злой дух', '25-17']
Добавим новый элемент в список rap и вновь выведем списки.
rap = lists[0] rap.append("Наше дело") print(rap) print(lists)
>> ['Баста', 'Кравц', 'Злой дух', '25-17', 'Наше дело']
>> [['Баста', 'Кравц', 'Злой дух', '25-17' 'Наше дело'], ['Наутилус Помпилиус', 'Кино', 'Ария'], ['Paul Oakenfold',
'Tiesto']]
Заметим, что соглашения в языке Python позволяют хранить кортеж внутри списка и наоборот, а также словарь внутри списка или кортежа.
40
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]