Python — это высокоуровневый объектно-ориентированный язык программирования, используемый для создания программного обеспечения, анализа данных и автоматизации задач. Python — это язык общего назначения, поэтому его можно использовать для создания практически любого программного обеспечения, веб-сайта, платформы искусственного интеллекта, модели машинного обучения и так далее. Python также широко используется в науке о данных и анализе данных, и его популярность среди программистов только растет, превосходя другие языки, такие как Java. Нет лучшего времени, чем сейчас, чтобы изучить Python. В этом разделе мы познакомим вас с тремя наиболее распространенными типами структур данных в этом языке программирования. Структура данных организует данные в компьютерной программе так, чтобы их можно было эффективно использовать.
Реальным примером структуры данных Python в действии является банковская очередь, в которой все выстраиваются в очередь для обслуживания представителем банка на основе принципа FIFO (First In, First Out). Это означает, что человек в начале очереди будет обслужен первым, а последний человек в очереди будет обслужен последним. И наоборот, стопка тарелок, в которой последняя добавленная тарелка удаляется первой, осуществляется по принципу LIFO (последним пришел/первым вышел), который гарантирует, что последний элемент будет извлечен первым, и наоборот. Вы можете применять эти алгоритмы к большему количеству ситуаций из реальной жизни, когда освоите их. Эта статья предназначена для начинающих, так что не волнуйтесь, если вы новичок в Python.
Что такое списки в Python?
Список в Python — это встроенная структура данных, которая позволяет нам последовательно хранить разные типы данных. В программировании на Python список содержит адреса, присвоенные каждому элементу в списке. Эти адреса известны как индексы. По умолчанию значение индекса непустого списка начинается с 0. Кроме того, списки не следует путать со связанными списками, поскольку последние не хранятся последовательно в памяти, а используют указатели и узлы для ссылки на данные.
Списки также поддерживают отрицательное индексирование, которое позволяет нам обращаться к элементам от последнего к первому и обозначается −1.
Чтобы помочь нам лучше понять, давайте воспользуемся примером, в котором мы хотим создать список, содержащий фрукты. Эти элементы будут заключены в квадратные скобки []и разделены запятой. Код ниже показывает наш список фруктов:
fruits_list = [‘Apple’,’Banana’,’Pineapple’,’Orange’,’Strawberry’,’Kiwi’,’Guava’]print(fruits_list)
Из приведенного выше примера видно, что наш список фруктов начинается Appleи заканчивается на Guava. Если мы хотим повторить элемент, мы можем это сделать, потому что списки изменяемы и допускают дублирование. Двумя ключевыми отличительными чертами списков являются то, что они упорядочены и допускают дублирование элементов.
Мы говорим, что списки в Python упорядочены, потому что, хотя объекты, которые они содержат, изменяемы, порядок этих объектов фиксирован, а это означает, что вы сможете добавлять новые элементы только в конец списка.
Мы также можем делать со списками более интересные вещи, такие как итерация, доступ, добавление и удаление элементов из списка. Это основные приемы работы со списками, с которыми мы все должны быть знакомы при работе с этой структурой данных.
Давайте используем наш пример выше, чтобы выполнить эти операции:
Iteration
Мы можем использовать определенные операции, например, print()для перебора нашего списка. Основываясь на нашем примере, мы можем перебирать каждый элемент в списке, используя здесь цикл for:
fruits_list = [ ‘Apple’, ‘Banana’, ‘Pineapple’, ‘Orange’, ‘Strawberry’, ‘Kiwi’, ‘Guava’]for fruit in fruits_list:print(fruit)
Здесь каждый элемент напечатан отдельно. С итерацией списка мы можем выполнять больше операций, таких как изменение названий фруктов в верхнем регистре или вообще извлечение имен в другой список.
Accessing elements
Доступ к элементам списка осуществляется через позицию индекса. Давайте посмотрим на другой пример:
fruits_list = [ ‘Apple’, ‘Banana’, ‘Pineapple’, ‘Orange’, ‘Strawberry’, ‘Kiwi’, ‘Guava’]print(fruits_list[2])
Здесь мы передали значение индекса 2для доступа к элементу в этой позиции. Помните, что индексы в списках начинаются с 0, а не с 1.
Modifying elements
Ранее мы узнали, что основной характеристикой списков является возможность изменения. Таким образом, мы можем добавлять, удалять и изменять элементы в списке. Мы можем добавить новый элемент в конец списка, используя append()функцию, например, как показано ниже:
fruits_list = [ ‘Apple’, ‘Banana’, ‘Pineapple’, ‘Orange’, ‘Strawberry’, ‘Kiwi’, ‘Guava’]fruits_list.append(‘Pear’)print(fruits_list)
Мы также можем удалить элементы по их значению в списке с помощью remove()функции:
fruits_list = [ ‘Apple’, ‘Banana’, ‘Pineapple’, ‘Orange’, ‘Strawberry’, ‘Kiwi’, ‘Guava’]fruits_list.remove(‘Banana’)print(fruits_list)
Мы также можем изменять элементы в списке через их положение в индексе:
fruits_list = [ ‘Apple’, ‘Banana’, ‘Pineapple’, ‘Orange’, ‘Strawberry’, ‘Kiwi’, ‘Guava’]fruits_list[3] = ‘Grapes’print(fruits_list)
More functions
Другие методы, используемые при работе со списками:
- len() возвращает длину списка
- count() отображает количество переданного значения списка
- sort () преобразует несортированный список в отсортированный список
Что такое кортежи?
В Python кортежи также являются встроенными структурами данных, которые содержат набор элементов. Они похожи на списки, но имеют несколько ключевых отличий. Основное различие между кортежем и списком состоит в том, что кортежи упорядочены и неизменяемы, а списки изменяемы. Неизменяемость — одна из ключевых характеристик кортежа, запрещающая удаление, добавление и изменение элементов. Они также могут содержать дубликаты.
Мы также заключаем кортеж в круглые, ()а не квадратные скобки []и разделяем их запятой.
Давайте углубимся в пример:
fruits_tuple = (‘Apple’,’Banana’,’Pineapple’,’Orange’,’Strawberry’,’Kiwi’,’Guava’)print(fruits_tuple)
Как и со списками, мы также можем выполнять основные операции, такие как итерация, индексация и доступ к элементам кортежа.
Доступ к элементам кортежа
Как и их аналоги в виде списков, кортежи также имеют индексацию, начинающуюся с нуля. Поэтому первый элемент положительного непустого кортежа будет [0]по умолчанию. И отрицательный [-1]подсчет индекса начнется с конца кортежа.
Рассмотрим пример ниже:
fruits_tuple = (‘Apple’,’Banana’,’Pineapple’,’Orange’,’Strawberry’,’Kiwi’,’Guava’)print(fruits_tuple[2])print(fruits_tuple[-1])
Повторение элементов кортежа
Точно так же мы можем перебирать каждый элемент кортежа. Мы использовали цикл for в приведенном ниже примере для перебора нашего кортежа:
fruits_tuple = (‘Apple’, ‘Banana’, ‘Pineapple’, ‘Orange’, ‘Strawberry’, ‘Kiwi’, ‘Guava’)for i in fruits_tuple:print(i)
Итерация кортежей в Python может выполняться по многим причинам, например, для проверки длины кортежа, доступа к определенному типу данных и так далее.
Что такое наборы?
Набор в Python — это еще одна встроенная структура данных, которая может содержать несколько элементов одновременно. Наборы похожи на списки и кортежи, но имеют другой синтаксис. Например, наборы заключены в фигурные скобки {}, не могут иметь повторяющихся элементов и содержать неупорядоченный набор элементов.
Давайте посмотрим на набор Python ниже:
employee_set = {‘Charlie Brown’,’Kaylee Rust’,’Holy Ronald’,’Kris Troy’,’Georgina Depp’}print(employee_set)
Операции, выполняемые над наборами, варьируются от повторения и изменения элементов, присутствующих в наборе. Ниже мы рассмотрим несколько примеров.
Изменение элементов набора
Поскольку мы знаем, что наборы изменяемы, мы можем изменить их по своему выбору. Мы можем использовать add(), чтобы добавить элемент в набор и remove()удалить элемент из набора.
Например:
employee_set = {‘Charlie Brown’,’Kaylee Rust’,’Holy Ronald’,’Kris Troy’,’Georgina Depp’}employee_set.add(‘Kamala Haris’)print(employee_set)
Чтобы использовать remove() метод на нашем наборе, мы можем сделать следующее:
employee_set = {‘Charlie Brown’,’Kaylee Rust’,’Holy Ronald’,’Kris Troy’,’Georgina Depp’}employee_set.remove(‘Kaylee Rust’)print(employee_set)
Поскольку наборы в Python по умолчанию неупорядочены, индексация не может использоваться для доступа или изменения элемента в наборе.
Более распространенные методы, используемые в наборах, включают:
- len() измеряет длину набора
- clear() очищает содержимое набора
- update() добавляет несколько элементов в набор
Списки против наборов против кортежей: различия и сходства
Вам понравилось изучать списки, кортежи и множества Python? Подведем итоги наших выводов по всем трем структурам данных:
Списки | Кортежи | Наборы |
использует квадратные скобки [] | использует скобки () | использует фигурные скобки {} |
дубликаты разрешены | дубликаты разрешены | дубликаты не допускаются |
изменчивый | неизменный | изменчивый |
упорядоченный | упорядоченный | неупорядоченный |
Поздравляем с тем, что вы погрузились с головой в встроенные структуры данных Python! Однако мы коснулись только основных возможностей списков, кортежей и множеств. Есть еще несколько структур данных и методов, которые пригодятся для различных приложений, которые вы, возможно, захотите изучить, например, словари, которые работают с парами ключ-значение, хэш-карты, хэш-таблицы, графы, которые работают с вершинами, и многое другое.