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

В этой статье будет рассмотрена часть структуры данных «Структуры данных и алгоритмы», а также предыдущая статья «Введение в Python».



Python 101: Introduction to Modern Python
Краткое введение в Pythonmedium.com



Python имеет два типа структур данных, а именно:

Встроенные структуры данных, которые уже определены в языке Python. Примеры включают списки, кортежи, наборы, словари и

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

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

Списки

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

# declaring a list with different data types
our-world = ['earth', 6371, True]
print(our-world)
# declaring a list with the constructor method, taking note of double parenthesis
our-world = list(('earth' 6371, True))
print(our-world)

Списки хранят несколько типов данных и дубликатов. Списки также упорядочены, что упрощает доступ к каждому элементу с помощью индексов, где индекс первого элемента равен 0, а индекс последнего элемента равен n-1, где n — количество элементов в списке.

Кортежи

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

# declaring a tuple with different data types
our-world = ('earth', 6371, True)
print(our-world)
# declaring a tuple with the constructor method, taking note of double parenthesis
our-world = tuple(('earth' 6371, True))
print(our-world)

Наборы

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

# declaring a tuple with different data types
our-world = {'earth', 6371, True}
print(our-world)
# declaring a tuple with the constructor method, taking note of double parenthesis
our-world = set(('earth' 6371, True))
print(our-world)

Словари

Словарь в Python хранит данные в формате пары ключ: значение. Ключи используются в качестве ссылки на значение в паре с. Словари упорядочены, изменяемы и не допускают дублирования ключей. Это пример словаря, в котором каждый из размеров радиуса планеты хранится в километрах.

planet-dictionary = {
    'Mercury': 2440,
    'Venus': 6052,
    'Earth': 6371,
    'Mars': 3390,
    'Jupiter': 69911,
    'Saturn': 58232,
    'Uranus': 25362,
    'Neptune': 24622
}

Связанные списки

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

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

Куча

Стек — это линейная структура данных, в которой используется последовательность «последним пришел — первым вышел» (LIFO). Прекрасным примером является то, что когда вы открываете историю браузера, посещенные вами сайты располагаются в порядке убывания, так что недавно посещенные сайты отображаются вверху данных истории.

В Python стек создается с помощью методов «.append()» и «.pop()».

# creating an empty list
planets = []
planets.append('Jupiter')
planets.append('Earth')
planets.append('Venus')
# print the list
print(planets)
# remove the first item in the list
planets.pop()
# print the final list
print(planets)

Окончательный вывод будет:

['Jupiter', 'Earth', 'Venus']
['Jupiter', 'Earth']

Это означает, что Венера была удалена первой, и это был последний элемент, который мы внесли в список.

Очереди

Очереди работают противоположно стекам, поскольку они обрабатывают данные в последовательности «первым пришел — первым обслужен» (FIFO). Все запросы обрабатываются в порядке поступления.

В Python очереди создаются с помощью метода «.insert(0, item)», код будет таким:

# creating an empty list
planets = []
# adding member items to the list
planets.insert(0, 'Jupiter')
planets.insert(0, 'Earth')
planets.insert(0, 'Venus')
# printing the list
print(planets)

Вывод будет:

['Venus', 'Earth', 'Jupiter']

Когда мы хотим удалить элементы с помощью метода «.pop()», первый введенный элемент, Юпитер, будет первым элементом из списка.