Основы структур данных в Python

PythonPythonIntermediate
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии (Lab) мы изучим структуры данных в Python. Основные типы структур данных, с которыми мы будем работать, это: списки (lists), кортежи (tuples), словари (dictionaries) и множества (sets).

Результаты

  • Списки (Lists)
  • Генераторы списков (List Comprehensions)
  • Кортежи (Tuples)
  • Словари (Dictionaries)
  • Множества (Sets)
Это Guided Lab, который предоставляет пошаговые инструкции, чтобы помочь вам учиться и практиковаться. Внимательно следуйте инструкциям, чтобы выполнить каждый шаг и получить практический опыт. Исторические данные показывают, что это лабораторная работа уровня средний с процентом завершения 71%. Он получил 93% положительных отзывов от учащихся.

Списки (Lists)

В 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)

Кортежи (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)

Словари (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)

Множества (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 и узнали, когда и как использовать эти структуры данных при решении задач.