Коллекции в Python: все, что вам нужно знать о коллекциях Python



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

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

Что такое коллекции в Python?

Коллекции в python - это в основном типы данных контейнера, а именно списки, наборы, кортежи, словарь. Они имеют разные характеристики в зависимости от декларации и использования.





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

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



    что такое бинарный поиск в Java
  • Набор неупорядочен и указан в квадратных скобках. Он не индексируется и не имеет повторяющихся записей.

  • Словарь имеет пары ключ-значение и изменчив по своей природе. Мы используем квадратные скобки для объявления словаря.

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



Специализированные структуры сбора данных

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

  1. namedtuple ()
  2. и
  3. Chainmap
  4. Счетчик
  5. OrderedDict
  6. defaultdict
  7. UserDict
  8. UserList
  9. UserString

namedtuple ()

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

Как это устроено?

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

из коллекции импортировать namedtuple

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

a = namedtuple ('курсы', 'name, tech') s = a ('data science', 'python') print (s) # на выходе будут курсы (name = 'python', tech = 'python')

Как создать именованный кортеж с помощью списка?

s._make (['data science', 'python']) # вывод будет таким же, как и раньше.

и

deque произносится как «колода» - это оптимизированный список, позволяющий легко выполнять вставку и удаление.

Как это устроено?

# создание двухсторонней очереди из коллекций import deque a = ['d', 'u', 'r', 'e', ​​'k'] a1 = deque (a) print (a1) # вывод будет deque ([' d ',' u ',' r ',' e ',' k '])

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

a1.append ('a') print (a1) # вывод будет deque (['d', 'u', 'r', 'e', ​​'k', 'a']) a1.appendleft (' e ') print (a1) # вывод будет deque ([' e ',' d ',' u ',' r ',' e ',' k ',' a '])

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

a1.pop () print (a1) # вывод будет deque (['e', 'd', 'u', 'r', 'e', ​​'k']) a1.popleft () print (a1 ) # вывод будет deque (['d', 'u', 'r', 'e', ​​'k'])

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

ChainMap

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

что такое экземпляр в Python

Как это устроено?

из коллекций импортировать ChainMap a = {1: 'edureka', 2: 'python'} b = {3: 'data science', 4: 'Machine Learning'} c = ChainMap (a, b) print (c) #the вывод будет ChainMap [{1: 'edureka', 2: 'python'}, {3: 'data science', 4: 'Machine Learning'}]

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

a1 = {5: 'AI', 6: 'neural networks'} c1 = c.new_child (a1) print (c1) # вывод будет ChainMap [{1: 'edureka', 2: 'python'}, { 3: «наука о данных», 4: «машинное обучение»}, {5: «ИИ», 6: «нейронные сети»}]

Счетчик

Это подкласс словаря, который используется для подсчета хешируемых объектов.

Как это устроено?

from collection import Counter a = [1,1,1,1,2,3,3,4,3,3,4] c = Counter (a) print (c) # вывод будет Counter = ({1: 4, 2: 1, 3: 4, 4: 2})

В дополнение к операциям, которые вы можете выполнять со словарем, Counter имеет еще 3 операции, которые мы можем выполнять.

  1. функция element - возвращает список, содержащий все элементы счетчика.
  2. Most_common () - возвращает отсортированный список со счетчиком каждого элемента в счетчике.
  3. Subtract () - принимает в качестве аргумента повторяемый объект и вычитает количество элементов в счетчике.

OrderedDict

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

что такое __init__

Как это устроено?

из коллекций import OrderedDict od = OrderedDict () od [1] = 'e' od [2] = 'd' od [3] = 'u' od [4] = 'r' od [5] = 'e' od [6] = 'k' from [7] = 'a' print (from) # вывод будет OrderedDict [(1, 'e'), (2, 'd'), (3, 'u'), (4, 'r'), (5, 'e'), (6, 'k'), (7, 'a')]

Неважно, какое значение вставлено в словарь, OrderedDict запоминает порядок, в котором он был вставлен, и соответственно получает результат. Даже если мы изменим значение ключа. Допустим, если мы изменим значение ключа с 4 на 8, порядок вывода не изменится.

defaultdict

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

Как это устроено?

from collection import defaultdict d = defaultdict (int) # мы также должны указать тип. d [1] = 'edureka' d [2] = 'python' print (d [3]) # он выдаст результат как 0 вместо keyerror.

UserDict

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

коллекции классов.UserDict ([исходные данные])

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

UserList

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

Потребность в этом классе возникла из-за необходимости создавать подкласс непосредственно из списка. С этим классом становится проще работать, поскольку базовый список становится атрибутом.

коллекции классов.UserList ([список])

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

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

Есть вопросы? упомяните их в комментариях, и мы свяжемся с вами в ближайшее время.