
Методички / 3. Списки, кортежи, словари. Теория
.pdfЗанятие 3. Списки, кортежи, словари.
Списки
Список позволяет хранить в себе много объектов, принадлежащих к разным типам данных. Таким образом список можно назвать контейнером для хранения объектов в определенном порядке.
У каждого объекта в списке есть порядковый номер, к каждому объекту в списке мы можем обратиться.
Список – это итерируемый объект (итерирование – процесс перебора, проход по итерируемы объектам).
Итерируемый объект – это объект, который можно разбить на части и присвоить им порядковые номера.
Сначала создадим список, содержащий цифры:
numbers = [1, 5, 8, 10, 12, 25]
print(numbers)
Таким образом мы создали список с целочисленными значениями и его распечатали.
Теперь создадим список, который будет содержать одновременно разные типы данных.
spisok = [2,5,7, 5.8, 43.1, "hello"]
print(spisok)
Пример. У врача есть 5 пациентов. Без списков мы бы создавали переменную для хранения данных о пациентах таким образом:
pacient1 = "Иванов"
pacient2 = "Петров"
pacient3 = "Сидоров"
pacient4 = "Смирнов"
pacient5 = "Спиридонов"
Чтобы распечатать фамилии:
print(pacient1)
print(pacient2)
print(pacient3)
print(pacient4)
print(pacient5)
1
Хорошо, что у нас всего 5 пациентов, а если бы у нас было, например, 100 мы бы потратили очень много времени.
Чтобы ускорить процесс, мы можем использовать список:
pacients = ["Иванов","Петров","Сидоров","Смирнов","Спиридонов"]
print(pacients)
К каждому объекту, находящемуся в списке, мы можем обратиться по отдельности. Каждый элемент списка имеет свой порядковый номер (индекс), начиная с нуля. Для этого мы пишем после оператора print имя списка и в квадратных скобках порядковый номер элемента.
pacients = ["Иванов","Петров","Сидоров","Смирнов","Спиридонов"]
print(pacients [3])
Предположим, у нас есть большой список и нам нужно вывести последний элемент списка. Для этого мы указываем обратный индекс. У последнего элемента индекс равен -1, предпоследнего - 2, предпредпоследнего -3 и т.д.
pacients = ["Иванов","Петров","Сидоров","Смирнов","Спиридонов"]
print(pacients [-1])
питон выводит Спиридонов
Можно вывести диапазон элементов.
pacients = ["Иванов","Петров","Сидоров","Смирнов","Спиридонов"]
print(pacients [0:2])
Теперь нам нужно добавить имя нового пациента в список. Для этого мы пишем имя нашего списка, к нему применяем метод append и в скобках указываем, что мы будем добавлять.
pacients = ["Иванов","Петров","Сидоров","Смирнов","Спиридонов"]
pacients.append("Белов")
print(pacients)
Список изменился, в конце списка добавился Белов.
Если необходимо вставить элемент в определенное место списка, то необходимо использовать метод insert. Индекс элемента указывается в скобках.
pacients = ["Иванов","Петров","Сидоров","Смирнов","Спиридонов"]
pacients.insert(0, "Белов")
print(pacients)
Список изменился, с индексом 0 теперь Белов.
2
Чтобы удалить последний элемент списка, используют метод pop. Ему можно не передавать никаких аргументов, так как он просто берет последний элемент и удаляет.
pacients = ["Иванов","Петров","Сидоров","Смирнов","Спиридонов"]
pacients.pop()
print(pacients)
Теперь у нас в списке 4 элемента.
Следующий метод для изучения – метод index, который возвращает порядковый номер элемента из списка. Для этого мы создаем переменную, пишем имя списка, пишем метод index и указываем порядковый номер элемента, который мы хотим получить.
pacients = ["Иванов","Петров","Сидоров","Смирнов","Спиридонов"]
n = pacients.index("Иванов")
print(n)
питон выводит 0
Для измерения длины списка используется оператор len()
pacients = ["Иванов","Петров","Сидоров","Смирнов","Спиридонов"]
print(len(pacients))
питон выводит 5 (в нашем списке 5 элементов)
Метод сортировки – метод sort
SD = [123, 180, 145, 110, 132, 165]
SD.sort()
print(SD)
Результат [110, 123, 132, 145, 165, 180] – произошла сортировка по возрастанию.
Таким же образом можно отсортировать список с переменными строкового типа.
pacients = ["Иванов","Петров","Сидоров","Смирнов","Спиридонов", "Белов"]
pacients.sort()
print(pacients)
Результат ['Белов', 'Иванов', 'Петров', 'Сидоров', 'Смирнов', 'Спиридонов']
Чтобы сортировать по убыванию, методу sort нужно задать параметр reverse.
3
SD = [123, 180, 145, 110, 132, 165]
SD.sort(reverse=True)
print(SD)
Результат [180, 165, 145, 132, 123, 110] – произошла сортировка по убыванию.
Метод сортировки работает только с теми списками, которые содержат один тип данных. Сортировка не произойдет, если в списке одновременно присутствуют численные и строковые переменные. Однако сортировка возможна, если в списке присутствуют численные элементы разных типов – целые и вещественные.
Мы может изменять список. Для этого после имени списка мы указывает порядковый номер элемента, который нужно изменить.
SD = [123, 180, 145, 110, 132, 165]
SD[1] = 140
print(SD)
Результат [123, 140, 145, 110, 132, 165] – элемент с порядковым номером 1 (180) заменился на
140.
Операторы принадлежности: Оператор in и not in
Оператор in возвращает True, если значение присутствует в последовательности, иначе возвращает False.
SD = [123, 180, 145, 110, 132, 165]
a = 123 in SD
print(a)
Результат True
pacients = ["Иванов","Петров","Сидоров","Смирнов","Спиридонов", "Белов"]
a = "Чернов" in pacients
print(a)
Результат False
Задание. Правилами стационара установлены виды продуктов питания, разрешенных к перед аче стационарным больным, и категорически запрещенных. Оформить их в виде двух списко в, и при вводе с клавиатуры произвольного названия продукта вывести на экран, числится ли такой продукт среди разрешенных и запрещенных, а если не числится ни там, ни там - вывод ить сообщение с телефоном, по которому можно спросить, примут ли к передаче такой прод укт.
4
sp_ok = ["яблоки", "бананы", "йогурт", "чай"]
sp_false = ["копченая колбаса", "шоколад", "консервы", "торт"]
x = input("Напишите название продукта:\n") # \n – символ новой строки
if x in sp_ok:
print('Разрешено!')
elif x in sp_false:
print('Запрещено!')
else:
print('Позвоните по телефону 20302302 для уточнения!')
Операторы идентичности is и not is
x is y
x is not y
Операторы is и not is проверяют идентичность объекта: x is y будет истинно тогда и только тогда, когда x и y являются одним и тем же объектом. Идентичность объекта определяется с помощью функции id(). Другими словами объекты идентичны, если они имеют одинаковый индификатор во время выполнения программы.
Пример x = 2 + 1 3 is x
# True
смотрим индификаторы id(x) 1091456 id(3)10914560
# пример со списками x = [1, 2, 3, 4, 5, 6]
y = x
y is x # True
y = x.copy() y is x # False
y is not x # True
Кортежи
5
Кортеж – это контейнер, который хранит в себе упорядоченные объекты. Но в отличие от списков кортежи абсолютно не изменяемы.
Для создания кортежа мы пишем его имя и круглые скобки.
tuple = ()
Так же как и в списки, мы можем записывать в кортеж данные любых типов. Но в отличие от списков после последнего элемента кортежа нужно поставить запятую, это особенно актуально для кортежа их одного элемента.
tuple = (25, 2, 10, 15.6, 12.2,)
print(tuple)
Задание для самостоятельного выполнения студентами.
Создайте кортеж, состоящий из пяти элементов. Проведите замену второго элемента кортежа на новое значение.
Словари
Это коллекция многих значений (контейнер для значений). Но в словарях в качестве индексов используются не порядковые номер, как в списках и кортежах, а ключи. При этом ключ может быть любого типа.
Для создания словаря мы пишем его имя и фигурные скобки.
dict = {}
Первое слово – это ключ, второе слово после двоеточия — это значение.
dict = {"Иванов": "терапевт", "Петров": "хирург", "Белов": "офтальмолог", "Чернов": "терапевт"}
print(dict)
Результат {'Иванов': 'терапевт', 'Петров': 'хирург', 'Белов': 'офтальмолог', 'Чернов': 'терапевт'}
Метод get – возвращает значение по ключу, если его нет – возвращает None
dict = {"Иванов": "терапевт", "Петров": "хирург", "Белов": "офтальмолог", "Чернов": "терапевт"}
print(dict.get("Иванов"))
Задание для самостоятельного выполнения студентами.
Составить словарь, ключами которого являются названия отделений городской больницы скорой помощи, а значениями - ФИО заведующих этих отделений и их телефонов.
6
Реализовать выдачу указанной справочной информации по названию отделения, введенному с клавиатуры. При вводе несуществующего названия отделения выводить соответствующее сообщение на экран.
dict = {"Хирургическое": "Иванов 455666", "Терапевтическое": "Петров 675433", "Пульмонологическое": "Сидоров 7564676"}
x = input("Введите название отделения: ")
val = dict.get(x)
if val == None:
print("Не найдено!")
else:
print(val)
7