Начало работы с структурами данных в Python в 5 шагах

Работа с данными в Python 5 шагов

 

Введение в структуры данных Python

 

Когда речь идет о изучении программирования, независимо от конкретного языка программирования, который вы используете для этой задачи, вы обнаружите, что есть несколько основных тем вашей новоизбранной дисциплины, в которые можно было бы классифицировать большую часть того, с чем вы сталкиваетесь. Некоторые из них, в общем порядке их освоения, включают: синтаксис (словарный запас языка); команды (сочетание словарного запаса в полезные способы); управление потоком выполнения (как мы направляем порядок выполнения команд); алгоритмы (шаги, которые мы предпринимаем для решения конкретных проблем… как так получилось, что это слово стало таким запутанным?); и, наконец, структуры данных (виртуальные хранилища, которые мы используем для обработки данных во время выполнения алгоритмов (которые, снова… являются серией шагов).

В основном, если вы хотите реализовать решение задачи, объединив серию команд в шаги алгоритма, в какой-то момент потребуется обработка данных, и структуры данных станут необходимыми. Такие структуры данных обеспечивают способ организации и эффективного хранения данных, и являются важными для создания быстрого, модульного кода, который может выполнять полезные функции и масштабироваться хорошо. Python, определенный язык программирования, имеет свои собственные встроенные структуры данных.

Этот учебник будет сосредоточен на этих четырех основных структурах данных Python:

  • Списки – Упорядоченные, изменяемые, позволяют дублирование элементов. Полезны для хранения последовательностей данных.
  • Кортежи – Упорядоченные, неизменяемые, позволяют дублирование элементов. Можно рассматривать их как неизменяемые списки.
  • Словари – Неупорядоченные, изменяемые, отображены по ключ-значение. Полезны для хранения данных в формате ключ-значение.
  • Множества – Неупорядоченные, изменяемые, содержат уникальные элементы. Полезны для проверки принадлежности и удаления дубликатов.

Помимо основных структур данных, Python также предоставляет более сложные структуры, такие как кучи, очереди и связанные списки, которые могут дополнительно улучшить вашу компетентность в программировании. Эти сложные структуры, построенные на основных, позволяют обрабатывать более сложные данные и часто используются в специализированных сценариях. Но вы не ограничены здесь; вы также можете использовать все существующие структуры в качестве основы для реализации своих собственных структур. Однако понимание списков, кортежей, словарей и множеств остается важным, поскольку они являются основными элементами для более сложных структур данных.

Это руководство стремится предоставить четкое и краткое понимание этих основных структур. При начале вашего пути по Python следующие разделы помогут вам освоить основные концепции и практические применения. От создания и манипулирования списками до использования уникальных возможностей множеств, этот учебник обеспечит вас навыками, необходимыми для успешного программирования.

 

Шаг 1: Использование списков в Python

 

Что такое список в Python?

 

Список в Python – это упорядоченный изменяемый тип данных, который может хранить различные объекты, позволяя дублировать элементы. Списки определяются с использованием квадратных скобок [ ], элементы разделяются запятыми.

Например:

fibs = [0, 1, 1, 2, 3, 5, 8, 13, 21]

 

Списки невероятно полезны для организации и хранения последовательностей данных.

 

Создание списка

 

Списки могут содержать различные типы данных, такие как строки, целые числа, логические значения и т. д. Например:

mixed_list = [42, "Привет, мир!", False, 3.14159]

 

Манипуляция списком

 

Элементы в списке могут быть доступными, добавленными, измененными и удаленными. Например:

# Доступ к 2-му элементу (индексация начинается с '0')
print(mixed_list[1])

# Добавление элемента
mixed_list.append("Это новое")

# Изменение элемента
mixed_list[0] = 5

# Удаление последнего элемента
mixed_list.pop(0)

 

Полезные методы списка

 

Некоторые удобные встроенные методы для списков включают:

  • sort() – Сортирует список на месте
  • append() – Добавляет элемент в конец списка
  • insert() – Вставляет элемент по индексу
  • pop() – Удаляет элемент по индексу
  • remove() – Удаляет первое вхождение значения
  • reverse() – Обращает список на месте

 

Практический пример с использованием списков

 

# Создание списка для покупок
cart = ["яблоки", "апельсины", "виноград"]

# Сортировка списка
cart.sort()

# Добавление нового элемента
cart.append("голубика")

# Удаление первого элемента
cart.pop(0)

print(cart)

 

Вывод:

['виноград', 'апельсины', 'голубика']

 

Шаг 2: Понимание кортежей в Python

 

Что такое кортежи?

 

Кортежи – это еще один тип последовательности данных в Python, похожий на списки. Однако, в отличие от списков, кортежи являются неизменяемыми, что означает, что их элементы нельзя изменить после создания. Они определяются заключением элементов в круглые скобки ( ).

# Определение кортежа
my_tuple = (1, 2, 3, 4)

 

Когда использовать кортежи

 

Кортежи обычно используются для коллекций элементов, которые не должны изменяться. Кортежи быстрее списков, что делает их отличными для операций только для чтения. Некоторые общие случаи использования включают:

  • Хранение констант или конфигурационных данных
  • Возвращаемые значения функции с несколькими компонентами
  • Ключи словаря, так как они являются хешируемыми

 

Доступ к элементам кортежа

 

Доступ к элементам кортежа осуществляется аналогично доступу к элементам списка. Индексация и срезы выполняются таким же образом.

# Доступ к элементам
first_element = my_tuple[0]
sliced_tuple = my_tuple[1:3]

 

Операции с кортежами

 

Поскольку кортежи неизменяемы, многие операции списка, такие как append() или remove(), неприменимы. Однако вы все равно можете выполнить некоторые операции:

  • Конкатенация: Объединение кортежей с помощью оператора +.
concatenated_tuple = my_tuple + (5, 6)
  • Повторение: Повторение кортежа с использованием оператора *.
repeated_tuple = my_tuple * 2
  • Вхождение: Проверка, существует ли элемент в кортеже с помощью ключевого слова in.
exists = 1 in my_tuple

 

Методы кортежей

 

У кортежей меньше встроенных методов по сравнению со списками из-за их неизменяемости. Некоторые полезные методы включают:

  • count(): Подсчет количества вхождений определенного элемента.
count_of_ones = my_tuple.count(1)
  • index(): Нахождение индекса первого вхождения значения.
index_of_first_one = my_tuple.index(1)

 

Упаковка и распаковка кортежей

 

Упаковка и распаковка кортежей – это удобные функции в Python:

  • Упаковка: Присваивание нескольких значений одному кортежу.
packed_tuple = 1, 2, 3
  • Распаковка: Присваивание элементов кортежа нескольким переменным.
a, b, c = packed_tuple

 

Неизменяемый, но не строго

 

Хотя сами кортежи являются неизменяемыми, они могут содержать изменяемые элементы, такие как списки.

# Кортеж с изменяемым списком
complex_tuple = (1, 2, [3, 4])

 

Обратите внимание, что хотя нельзя изменить сам кортеж, можно изменить изменяемые элементы внутри него.

 

Шаг 3: Овладение словарями в Python

 

Что такое словарь в Python?

 

Словарь в Python – это неупорядоченный изменяемый тип данных, который хранит соответствия уникальных ключей и значений. Словари записываются с помощью фигурных скобок { } и состоят из пар ключ-значение, разделенных запятыми.

Например:

student = {"name": "Michael", "age": 22, "city": "Chicago"}

 

Словари полезны для хранения данных структурированным образом и доступа к значениям по ключам.

 

Создание словаря

 

Ключи словаря должны быть неизменяемыми объектами, такими как строки, числа или кортежи. Значения словаря могут быть любыми объектами.

student = {"name": "Susan", "age": 23}

prices = {"milk": 4.99, "bread": 2.89}

 

Изменение словаря

 

Элементы можно получать, добавлять, изменять и удалять с помощью ключей.

# Получение значения по ключу
print(student["name"])

# Добавление нового ключа-значения
student["major"] = "computer science"  

# Изменение значения
student["age"] = 25

# Удаление ключа-значения
del student["city"]

 

Полезные методы словаря

 

Некоторые полезные встроенные методы включают:

  • keys() – Возвращает список ключей
  • values() – Возвращает список значений
  • items() – Возвращает кортежи (ключ, значение)
  • get() – Возвращает значение по ключу, избегая KeyError
  • pop() – Удаляет ключ и возвращает значение
  • update() – Добавляет несколько ключей-значений

 

Практический пример со словарями

 

scores = {"Francis": 95, "John": 88, "Daniel": 82}

# Добавление новой оценки
scores["Zoey"] = 97

# Удаление оценки John'а
scores.pop("John")  

# Получение оценки Daniel'а
print(scores.get("Daniel"))

# Вывод всех имен студентов 
print(scores.keys())

 

Шаг 4: Изучение множеств в Python

 

Что такое множество в Python?

 

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

Например:

numbers = {1, 2, 3, 4}

 

Множества полезны для проверки принадлежности, удаления дубликатов и выполнения математических операций.

 

Создание множества

 

Множества могут быть созданы из списков, передав их в конструктор set():

my_list = [1, 2, 3, 3, 4]
my_set = set(my_list) # {1, 2, 3, 4}

 

Множества могут содержать смешанные типы данных, такие как строки, логические значения и т. д.

 

Изменение множества

 

Элементы могут быть добавлены и удалены из множества.

numbers.add(5) 

numbers.remove(1)

 

Полезные операции с множествами

 

Некоторые полезные операции с множествами включают:

  • union() – Возвращает объединение двух множеств
  • intersection() – Возвращает пересечение множеств
  • difference() – Возвращает разность между множествами
  • symmetric_difference() – Возвращает симметрическую разность

 

Практический пример с множествами

 

A = {1, 2, 3, 4}
B = {2, 3, 5, 6}

# Объединение - объединяет множества 
print(A | B) 

# Пересечение 
print(A & B)

# Разность  
print(A - B)

# Симметрическая разность
print(A ^ B)

 

Шаг 5: Сравнение списков, словарей и множеств

 

Сравнение характеристик

 

Ниже приведено краткое сравнение четырех структур данных Python, на которые мы ссылались в этом учебнике.

Структура Упорядоченность Изменяемость Дублирующиеся элементы Сферы применения
Список Да Да Да Хранение последовательностей
Кортеж Да Нет Да Хранение неизменяемых последовательностей
Словарь Нет Да Ключи: НетЗначения: Да Хранение пар ключ-значение
Множество Нет Да Нет Удаление дубликатов, проверка принадлежности

 

Когда использовать каждую структуру данных

 

Рассматривайте это как мягкое руководство, к какой структуре обратиться первой в конкретной ситуации.

  • Используйте списки для упорядоченных, основанных на последовательности данных. Полезно для стеков/очередей.
  • Используйте кортежи для упорядоченных, неизменяемых последовательностей. Полезно, когда вам нужна фиксированная коллекция элементов, которые не должны изменяться.
  • Используйте словари для данных ключ-значение. Полезно для хранения связанных свойств.
  • Используйте множества для хранения уникальных элементов и математических операций.

 

Практический пример, использующий все четыре структуры данных

 

Давайте посмотрим, как все эти структуры могут работать вместе на примере, который немного сложнее, чем одна строка.

# Создаем список имен людей
names = ["John", "Mary", "Bob", "Mary", "Sarah"]

# Создаем кортеж с дополнительной информацией (например, email)
additional_info = ("john@example.com", "mary@example.com", "bob@example.com", "mary@example.com", "sarah@example.com")

# Создаем множество для удаления дубликатов
unique_names = set(names)

# Создаем словарь пар имя-возраст
persons = {}
for name in unique_names:
  persons[name] = random.randint(20,40)

print(persons)

 

Вывод:

{'John': 34, 'Bob': 29, 'Sarah': 25, 'Mary': 21}

 

В этом примере используется список для упорядоченной последовательности, кортеж для хранения дополнительной неизменяемой информации, множество для удаления дубликатов и словарь для хранения пар ключ-значение.

 

Двигаемся вперед

 

В этом комплексном руководстве мы внимательно рассмотрели основные структуры данных в Python, включая списки, кортежи, словари и множества. Эти структуры являются строительными блоками программирования на Python, предоставляя фреймворк для хранения, обработки и манипуляции данными. Понимание этих структур является необходимым для написания эффективного и масштабируемого кода. Начиная с манипуляции последовательностями с помощью списков, до организации данных с помощью ключ-значение в словарях и обеспечения уникальности с помощью множеств, эти основные инструменты предлагают огромные возможности для обработки данных.

Как мы видели на примерах кода, эти структуры данных могут быть комбинированы различными способами для решения сложных задач. Используя эти структуры данных, вы можете открыть двери к широкому спектру возможностей в анализе данных, машинном обучении и за его пределами. Не стесняйтесь изучать официальную документацию по структурам данных в Python для более глубокого понимания.

Счастливого программирования!

    Мэтью Майо (@mattmayo13) имеет степень магистра по информатике и диплом выпускника по добыче данных. В качестве главного редактора VoAGI Мэтью стремится сделать сложные концепции науки о данных доступными. Его профессиональные интересы включают обработку естественного языка, алгоритмы машинного обучения и исследование новейших искусственных интеллектов. Он движим миссией демократизации знаний в сообществе науки о данных. Мэтью программирует с шести лет.