Структуры данных в Python

машинное обучение

Автор | АНИРУДДХА БХАНДАРИ Компилировать|ВКонтакте Источник | Аналитика Видья

Обзор

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

  • Узнайте о различных структурах данных, предоставляемых Python, включая списки, кортежи и многое другое.

вводить

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

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

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

Итак, я надеюсь, что вы имеете представление о структурах данных в Python.

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

содержание

  • Структуры данных в Python

  • Структура данных 1: списки в Python

    • Создать список
    • элемент списка доступа
    • Добавить значение в список
    • удалить элемент из списка
    • Сортировать список
    • составной список
    • понимание списка
    • Использование стеков списков и очередей
  • Структура данных 2: кортежи в Python

    • Создание кортежей в Python
    • Инвариантность кортежей
    • присвоение кортежа
    • изменить значение кортежа
  • Структура данных 3: Словари в Python

    • создать словарь
    • Ключи доступа и значения
  • Структуры данных 4: коллекции в Python

    • Добавлять и удалять элементы из коллекции
    • набор операций

Структуры данных в Python

структура данныхэто способ эффективного хранения и организации данных. Это позволит вам легко получать доступ и выполнять операции с данными.

Когда дело доходит до структур данных, универсальной модели не существует. Вам нужно будет хранить данные другим способом, чтобы удовлетворить временную потребность. Может быть, вы хотите хранить все типы данных вместе, или, может быть, вам нужен более быстрый поиск данных, или что-то, что просто хранит отдельные элементы данных.

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

Структура данных 1: списки в Python

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

Создать список

Списки создаются путем включения элементов в [], где каждый элемент разделяется запятыми:

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

элемент списка доступа

Для доступа к элементам списка мы используем индекс. Каждый элемент в списке имеет связанный с ним индекс, который зависит от его положения в списке. Первый элемент списка имеет индекс 0, следующий элемент имеет индекс 1 и так далее. Индекс последнего элемента списка меньше длины списка.

Но индекс не всегда должен быть положительным, он может быть и отрицательным. Как вы думаете, что означает отрицательный индекс?

Положительные индексы отсчитываются от начала списка, а отрицательные индексы отсчитываются от конца списка. Это позволяет избежать тривиальных вычислений, которые мы должны выполнить, если хотим вернуть n-й элемент с конца списка. Итак, для последнего элемента списка нам не нужно возвращатьList_name[len(List_name)-1]элемент, просто напишитеList_name[-1].

Используя отрицательные индексы, мы можем легко вернуть n-й элемент в конце списка. Если мы хотим вернуть первый элемент с конца или последний индекс, тогда соответствующий индекс равен -1. Точно так же индекс предпоследнего элемента будет равен -2 и так далее. Помните, что 0-й индекс по-прежнему относится к первому элементу в списке.

Но что, если мы хотим вернуть диапазон элементов между двумя позициями в списке? Это называется нарезкой. Все, что нам нужно сделать, это указать начальный и конечный индексы, например.List_name[start : end].

Здесь важно помнить, что элемент в конце индекса никогда не включается. Возвращает только элементы от начального индекса до индекса, равного end-1.

Добавить значение в список

мы можем использоватьappend()илиinsert()метод для добавления нового элемента в существующий список:

  • append(), добавление элемента в конец списка
  • insert(), который добавляет элемент в список в указанной позиции

удалить элемент из списка

Удалить элемент из списка так же просто, как добавить элемент, вы можете использоватьremove()илиpop()метод завершен:

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

Сортировать список

В большинстве случаев вы будете использовать список для сортировки элементов. так поймиsort()Метод очень важен. Это позволяет вам сортировать элементы списка на месте в порядке возрастания или убывания:

Но все становится немного сложнее, когда вы хотите отсортировать список, содержащий строковые элементы. Как сравнить две строки? Итак, строковые значения сортируются с использованием значений ASCII символов в строке. С каждым символом в строке связано целочисленное значение. Мы используем эти значения для сортировки строки.

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

объединить список

Мы даже можем объединить два или более списков, просто используя символ +. Это возвращает новый список, содержащий элементы из обоих списков:

понимание списка

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

Теперь мы посмотрим, как это сделать кратко, используя понимание списка:

Увидеть разницу? Понимание списков — полезный синтаксис для любого специалиста по данным, потому что вы можете увидеть и написать краткий, легко читаемый код!

стеки и очереди

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

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

С другой стороны, очередь — это список элементов, где добавление элементов происходит в конце списка, а удаление элементов — в начале списка. Вы можете думать об этом как об очереди в реальном мире. Когда человек впереди выходит из очереди, очередь становится короче. Очередь растет по мере добавления новых участников в очередь с конца. Он использует принцип «первым пришел — первым вышел».

Теперь, как специалист по данным или аналитик, вы можете не использовать эту концепцию каждый день, но она определенно поможет вам, когда вам нужно будет создавать свои собственные алгоритмы!

Структура данных 2: кортежи в Python

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

Мы рассмотрим это дальше, но сначала давайте посмотрим, как кортежи создаются в Python!

Создание кортежей в Python

Кортежи могут быть сгенерированы путем записи значений внутри (круглых скобок), где каждый элемент разделен запятыми. Но даже если вы напишете кучу значений без скобок и присвоите их переменной, вы все равно получите кортеж!

Хорошо, теперь, когда мы знаем, как создавать кортежи, давайте поговорим об иммутабельности.

Инвариантность кортежей

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

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

Все в Python является объектом. Таким образом, мы можем использовать встроенныйid()метод для проверки местоположения объекта в памяти. Это называется идентичностью объекта. Давайте создадим список и расположим список и его элементы:

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

Положение списка не изменилось, изменилось положение элементов. Это означает, что для элемента создается новый объект и сохраняется в списке. Вот что значит переменная. Изменяемые объекты могут изменять свое состояние или содержимое после создания, но неизменяемые объекты не могут.

Но мы можем называть кортежи псевдонеизменяемыми, потому что хоть они и неизменяемые, они могут содержать изменяемые объекты, значения которых можно изменить!

Как видно из приведенного выше примера, мы можем изменить значение списка неизменяемых объектов, содержащихся в кортеже.

присвоение кортежа

Упаковка и распаковка кортежей — это полезные операции, которые можно выполнять для присвоения значения другому кортежу в одной строке.

Мы видели упаковку кортежей, когда мы делаем кортежи. Распаковка кортежа противоположна упаковке.

Это полезно для замены значений внутри строки. Честно говоря, это было первое, что меня взволновало в Python — возможность сделать так много с таким небольшим количеством кода!

изменить значение кортежа

Хотя я сказал, что значения кортежа нельзя изменить, на самом деле его можно изменить, преобразовав его в список с помощью list(). Когда вы закончите вносить изменения, вы можете снова использовать tuple(), чтобы преобразовать его обратно в кортеж.

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

Структура данных 3: Словари в Python

Словарь — это еще одна структура данных Python для хранения неизменяемых, но неупорядоченных разнородных объектов. Это означает, что когда вы пытаетесь получить доступ к этим элементам, они могут быть не в том порядке, в котором вы их вставили.

Однако то, что отличает словарь от списка, заключается в том, как в нем хранятся элементы. Доступ к элементам в словарях осуществляется по их ключевым значениям, а не по их индексам, как мы делали со списками. Таким образом, словари содержат пары ключ-значение, а не только отдельные элементы.

Создать словарь

Словари генерируются путем записи ключей и значений внутри скобок {}. Каждая пара ключ-значение отделяется запятой:

Используя ключ, мы можем легко извлечь связанное значение:

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

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

Ключи доступа и значения

ты можешь использоватьkeys()метод для доступа к ключам из словаря, используйтеvalues()метод доступа к значению. Мы можем посмотреть на них, используя цикл for, или мы можем использоватьlist()Преобразуйте их в списки:

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

Структуры данных 4: коллекции в Python

Иногда нежелательно, чтобы один и тот же элемент появлялся в списке или кортеже несколько раз. Здесь вы можете использоватьсобиратьструктура данных. Набор — это неупорядоченный, но изменяемый набор элементов, который содержит только уникальные значения.

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

Добавлять и удалять элементы из коллекции

Чтобы добавить значения в коллекцию, используйтеadd()метод. Это позволяет вам добавлять любое значение, кроме изменяемых объектов:

Чтобы удалить значение из коллекции, есть два варианта:

  • первыйremove()метод, он выдаст ошибку, если элемента нет в коллекции

  • Второйdiscard()метод, который удаляет элемент, но не выдает ошибку, когда элемент отсутствует в коллекции

Если значение не существует,remove()выдаст ошибку, аdiscard()не буду.

Операции по сбору

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

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

Пересечение двух наборов возвращает только общие для обоих наборов значения:

Отличие одного набора от другого дает только значения, отсутствующие в первом наборе:

конец

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

Оригинальная ссылка:Woohoo.Со слов аналитиков vi.com/blog/2020/0…

Добро пожаловать на сайт блога Panchuang AI:panchuang.net/

sklearn машинное обучение китайские официальные документы:sklearn123.com/

Добро пожаловать на станцию ​​сводки ресурсов блога Panchuang:docs.panchuang.net/