Рубрики
Без рубрики

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

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

Автор оригинала: Waseem.

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

Что Такое Коллекции В Python?

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

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

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

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

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

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

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

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

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

namedtuple( )

Он возвращает кортеж с именованной записью, что означает, что каждому значению в кортеже будет присвоено имя. Он преодолевает проблему доступа к элементам с использованием значений индекса. С помощью 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')

Как Создать namedtuple С Помощью Списка?

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'])

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

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'])

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

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'])

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

Цепная карта

Это словарь, подобный классу, который способен создавать одно представление нескольких сопоставлений. В основном он возвращает список нескольких других словарей. Предположим, у вас есть два словаря с несколькими парами ключевых значений, в этом случае 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'}]

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

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( ) – Он принимает итеративный объект в качестве аргумента и вычитает количество элементов в счетчике.

Приказано

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

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

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])

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

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

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

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

class collections.UserList([list])

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

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

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