Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методички / 3. Списки, кортежи, словари. Теория

.pdf
Скачиваний:
0
Добавлен:
08.03.2025
Размер:
204.91 Кб
Скачать

Занятие 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