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

В этом сообщении блога мы рассмотрим некоторые классы, предоставляемые модулем collections, и то, как они могут быть полезны в нашем повседневном программировании.

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

Первый класс, который мы рассмотрим, это `namedtuple()`. Как следует из названия, это подкласс кортежа с именованными полями. Это может быть полезно, когда мы хотим дать более осмысленное имя элементам кортежа. Например, вместо доступа к элементам кортежа с помощью индексации мы можем получить к ним доступ по имени их поля. Вот пример:

from collections import namedtuple

# Creating a namedtuple
Person = namedtuple("Person", ["name", "age"])

# Creating an object of namedtuple
p = Person("John", 32)

# Accessing the fields using indexing
print(p[0]) # Output: "John"
print(p[1]) # Output: 32

# Accessing the fields using field name
print(p.name) # Output: "John"
print(p.age) # Output: 32

дека

Следующий класс, который мы рассмотрим, это `deque`. Это двусторонняя очередь, которую можно использовать как стек или очередь. Он реализован как двусвязный список и обеспечивает временную сложность O(1) для операций добавления и извлечения. Вот пример:

from collections import deque

# Creating a deque
d = deque()

# Adding elements to the deque
d.append(1)
d.append(2)
d.append(3)

# Popping elements from the deque
print(d.pop()) # Output: 3
print(d.pop()) # Output: 2
print(d.pop()) # Output: 1

Прилавок

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

from collections import Counter

# Creating a Counter
c = Counter([1, 1, 2, 3, 4, 4, 4, 5])

# Printing the occurrences of each item
print(c) # Output: Counter({4: 3, 1: 2, 2: 1, 3: 1, 5: 1})

defaultdict

Следующий класс, который мы рассмотрим, это `defaultdict`. Это подкласс dict, который вызывает фабричную функцию для предоставления отсутствующих значений. Фабричная функция определяется во время создания объекта defaultdict и вызывается каждый раз, когда запрашивается отсутствующий ключ.

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

from collections import defaultdict

d = defaultdict(int)
d['a'] = 1
d['b'] = 2
print(d['c']) # Output: 0

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

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

Надеюсь, вам понравился этот пост и вы узнали что-то новое сегодня :)