Введение
В этом лабораторном занятии (Lab) мы изучим структуры данных в Python. Основные типы структур данных, с которыми мы будем работать, это: списки (lists), кортежи (tuples), словари (dictionaries) и множества (sets).
Результаты
- Списки (Lists)
- Генераторы списков (List Comprehensions)
- Кортежи (Tuples)
- Словари (Dictionaries)
- Множества (Sets)
Списки
В Python списки (lists) являются универсальными контейнерами, способными хранить различные типы объектов. Здесь мы рассмотрим основные операции со списками, такие как создание, доступ к значениям, обновление значений, добавление значений и удаление значений.
Создание списка
Списки определяются с помощью значений, разделенных запятыми и заключенными в квадратные скобки. Элементы списка не обязаны быть одного типа.
>>> l1 = [1, 2, 3, 'a', 'hello']
>>> l1
[1, 2, 3, 'a', 'hello']
>>> l2 = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday']
>>> l2
['monday', 'tuesday', 'wednesday', 'thursday', 'friday']
Доступ к значению
Для доступа к значениям в списке используйте индекс в квадратных скобках.
>>> print("l1[0] = ", l1[0])
l1[0] = 1
Вы можете использовать квадратные скобки для извлечения элементов списка, это называется срезом (slice). Срез - это способ извлечения диапазона элементов из списка.
list_name[Start:End:Step]
Первый индекс (Start) - это индекс начала среза, второй индекс (End) - индекс конца среза. Третий индекс (Step) - это шаг, где шаг - это приращение (по умолчанию 1).
>>> print("l2[1:3] = ", l2[1:3])
l2[1:3] = ['tuesday', 'wednesday']
Обновление значения
Вы можете обновить значение, обратившись к нему по индексу и присвоив ему новое значение:
>>> l1[0] = 10
>>> l1
[10, 2, 3, 'a', 'hello']
Добавление значения
Вы можете добавить значение в список, используя метод append().
list_name.append(value)
>>> l1.append('b')
>>> l1
[10, 2, 3, 'a', 'hello', 'b']
>>> l2.append('statuday')
>>> l2
['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'statuday']
Удаление значения
Вы можете удалить значение из списка, используя ключевое слово del. Этот метод удаляет элемент с указанным индексом из списка.
del list_name[index]
>>> del l1[0]
>>> l1
[2, 3, 'a', 'hello', 'b']
Вы также можете использовать метод remove() для удаления указанного значения из списка.
list_name.remove(value)
>>> l1.remove('a')
>>> l1
[2, 3, 'hello', 'b']
Другие функции для списков
Вы можете использовать функцию len() для получения длины списка.
>>> print("Length of l1 = ", len(l1))
Length of l1 = 5
И функцию sorted() для сортировки списка.
>>> print("Sorted of l2 = ", sorted(l2))
Sorted of l2 = ['friday', 'monday', 'thursday', 'tuesday', 'wednesday']
Генераторы списков (List Comprehensions)
Генератор списка (List comprehension) представляет собой компактный и мощный способ создания списков в Python путем итерации по существующему итерируемому объекту, такому как список, и применения выражения к каждому элементу для создания нового списка.
Формат генератора списка можно представить в виде цикла for. Синтаксис генератора списка выглядит следующим образом:
new_list = [expression for item in old_list] new_list = [expression for item in old_list if condition]
new_list: Получаемый в результате список, сформированный на основе выражения для каждого элемента старого списка.expression: Операция или преобразование, применяемое к каждому элементу старого списка для создания нового списка.item: Переменная, представляющая каждый элемент старого списка.old_list: Существующий список, используемый для создания нового списка.condition(необязательный параметр): Фильтрующее условие, которое можно применить для включения в новый список только определенных элементов старого списка на основе заданного критерия.
Практика работы с генераторами списков
Практикуем использование генераторов списков в оболочке Python:
>>> ls = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> even_list = [item for item in ls if item % 2 == 0]
>>> even_list
[2, 4, 6, 8, 10]
В этом примере список even_list будет содержать только четные числа из списка ls.
Генераторы списков предоставляют компактный и читаемый способ манипулирования списками, делая код на Python более выразительным и эффективным.
Кортежи
Кортежи (tuples) в Python похожи на списки, за исключением того, что элементы кортежа неизменяемы, то есть их нельзя изменить после создания. Элементы кортежа заключаются в круглые скобки () и разделяются запятыми ,.
Создание кортежа
Создадим кортежи с различными элементами:
>>> tup1 = ('Google', 'Run', 'Python')
>>> tup2 = (1, 2, 3, 4, 5)
>>> empty_tup = ()
>>> tup1
('Google', 'Run', 'Python')
>>> tup2
(1, 2, 3, 4, 5)
>>> empty_tup
()
Доступ к элементам кортежа
Для доступа к элементам кортежа используйте индексацию:
>>> print(tup1[0])
Google
>>> print(tup2[1:3])
(2, 3)
>>> print(empty_tup[0])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: tuple index out of range ## Возникает ошибка, так как кортеж пуст.
Объединение кортежей
Хотя кортежи нельзя изменить, их можно объединять:
>>> tup3 = tup1 + tup2
>>> print(tup3)
('Google', 'Run', 'Python', 1, 2, 3, 4, 5)
Кортежи предоставляют надежный способ хранения данных, которые не должны быть изменены, обеспечивая стабильность и целостность ваших программ на Python.
Словари
Словари (dictionaries) в Python - это гибкие и изменяемые структуры данных, которые хранят пары ключ-значение.
Каждая пара ключ-значение разделяется двоеточием, а каждая пара разделяется запятой, при этом весь словарь заключается в фигурные скобки {}.
d = {key1 : value1, key2 : value2, key3 : value3 }
Ключи в словаре должны быть уникальными, но значения могут повторяться.
Создание словаря
Создадим словари с парами ключ-значение:
>>> dict1 = {'name': 'James', "age": 23, "phone": "12345"}
>>> dict2 = {}
>>> dict1
{'name': 'James', 'age': 23, 'phone': '12345'}
>>> dict2
{}
Доступ к элементам словаря
Для доступа к парам ключ-значение используйте ключ в квадратных скобках [] или функцию get():
>>> print(dict1["name"])
James
>>> print(dict2["name"])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'name'
>>> print(dict2.get("name"))
None
При использовании dict[key] для доступа к ключу, который не существует в словаре, возникает исключение KeyError. Однако, dict.get(key) возвращает None, если ключ не найден в словаре.
Изменение словаря
Добавляйте или изменяйте записи в словаре, присваивая значения ключам:
>>> dict2["name"] = "Lily"
>>> dict1["name"] = "Bob"
>>> dict2["name"]
'Lily'
>>> dict1["name"]
'Bob'
Удаление элементов словаря
Удаляйте пары ключ-значение с помощью del dict[key] или очищайте весь словарь с помощью dict.clear():
>>> del dict1["name"]
>>> print(dict1)
{'age': 23, 'phone': '12345'}
>>> dict2.clear()
>>> print(dict2)
{}
Словари предоставляют гибкий способ хранения и манипулирования данными, что делает их незаменимыми для различных задач в программировании на Python.
Множества
Множества (sets) в Python представляют собой неупорядоченные коллекции уникальных элементов. Их можно создавать с использованием фигурных скобок {} или функции set().
Создание множества
Для создания пустого множества необходимо использовать set(), а не {}, так как {} используется для создания пустого словаря. Создадим множества разными способами:
>>> set1 = set()
>>> print(set1)
set()
>>> set2 = {'apple', 'orange', 'banana'}
>>> print(set2)
{'banana', 'apple', 'orange'}
>>> set3 = set("Hello World!")
>>> print(set3)
{'o', 'H', 'W', ' ', 'd', 'r', '!', 'e', 'l'}
Добавление элемента
Добавляем элементы в множество с помощью методов add() или update():
>>> set1.add('apple')
>>> print(set1)
{'apple'}
>>> set2.update({'orange', 'pear'})
>>> print(set2)
{'apple', 'orange', 'banana', 'pear'}
Удаление элемента
Удаляем элементы из множества с помощью методов discard() или remove().
Метод discard() не вызывает ошибки, если элемент отсутствует в множестве, в то время как метод remove() вызывает ошибку.
>>> set1.remove('apple')
>>> print(set1)
set()
>>> set1.discard('banana')
>>> print(set1)
set()
Множества предоставляют удобный способ работы с коллекциями уникальных элементов в Python, что делает их полезными для различных задач, таких как удаление дубликатов или проверка на принадлежность.
Резюме
Поздравляем! Вы завершили лабораторную работу (Lab) по структурам данных.
В рамках этой лабораторной работы вы изучили основные структуры данных Python и узнали, когда и как использовать эти структуры данных при решении задач.



