коллекции в Python | Введение в коллекции Python

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

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

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

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

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

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

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

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

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

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

  1. именованный кортеж()
  2. следовательно
  3. Цепная карта
  4. Прилавок
  5. OrderedDict
  6. defaultdict
  7. UserDict
  8. Список пользователей
  9. Пользовательская строка

именованный кортеж()

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

Как это работает?

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

from collections import namedtuple

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

a = namedtuple('courses' , 'name , tech')
s = a('data science' , 'python')
print(s)

#the output will be courses(name="python" , tech="python")

Как создать именованный кортеж, используя список?

s._make(['data science' , 'python'])
#the output will be same as before.

следовательно

deque произносится как «колода» — это оптимизированный список для простой вставки и удаления.

Как это работает?

#creating a deque
from collections import deque

a = ['d' , 'u' , 'r' , 'e' , 'k']
a1 = deque(a)
print(a1)
#the output will be deque(['d' , 'u' , 'r' , 'e' , 'k'])

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

a1.append('a')
print(a1)
# the output will be deque(['d' , 'u' , 'r' , 'e' , 'k' , 'a'])
a1.appendleft('e')
print(a1)
# the output will be deque(['e' , 'd' , 'u' , 'r' , 'e' , 'k' , 'a'])

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

a1.pop()
print(a1)
#the output will be deque(['e' , 'd' , 'u' , 'r' , 'e' , 'k'])
a1.popleft()
print(a1)
#the output will be deque(['d' , 'u' , 'r' , 'e' , 'k'])

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

ЦепьКарта

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

Как это работает?

from collections import ChainMap
a = { 1: 'edureka' , 2: 'python'}
b = {3: 'data science' , 4: 'Machine learning'}
c = ChainMap(a,b)
print(c)
#the output will be ChainMap[{1: 'edureka' , 2: 'python'} , {3: 'data science' , 4: 'Machine learning'}]

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

a1 = { 5: 'AI' , 6: 'neural networks'}
c1 = c.new_child(a1)
print(c1)
#the output will be ChainMap[{1: 'edureka' , 2: 'python'} , {3: 'data science' , 4: 'Machine learning'}, { 5: 'AI' , 6: 'neural networks'}]

Прилавок

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

Как это работает?

from collections import Counter
a = [1,1,1,1,2,3,3,4,3,3,4]
c = Counter(a)
print(c)
#the output will be Counter = ({1:4 , 2:1 , 3:4 , 4:2})

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

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

OrderedDict

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

Как это работает?

from collections import OrderedDict
od = OrderedDict()
od[1] = 'e'
od[2] = 'd'
od[3] = 'u'
od[4] = 'r'
od[5] = 'e'
od[6] = 'k'
od[7] = 'a'
print(od)
#the output will be OrderedDict[(1 , 'e'), (2 , 'd') , (3 , 'u'), (4 , 'r'), (5 , 'e'), (6 , 'k'), (7 , 'a')]

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

defaultdict

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

Как это работает?

from collections import defaultdict
d = defaultdict(int)
#we have to specify a type as well.
d[1] = 'edureka'
d[2] = 'python'
print(d[3])
#it will give the output as 0 instead of keyerror.

UserDict

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

class collections.UserDict([initialdata])

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

Список пользователей

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

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

class collections.UserList([list])

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

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

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

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *