UP | HOME

Модуль collections в Python

Table of Contents

1 Некоторые интересные классы из модуля collections

Для начала, нам необходимо импортировать модуль

import collections

2 Counter

Это подкласс класса dict.

2.1 метод elements

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

import collections

c = collections.Counter(a=4, b=2, c=0, d=-2)
print(list(c.elements()))
['a', 'a', 'a', 'a', 'b', 'b']

2.2 метод most_common

Возвращает лист пар в порядке убывания значений.

import collections
print(collections.Counter('abracadabra').most_common(3))
[('a', 5), ('r', 2), ('b', 2)]

2.3 Сложение и вычитание

import collections

a = collections.Counter(a=4, b=2, c=0, d=-2)
b = collections.Counter(a=1, b=2, c=3, d=4)

print(a + b)
print(a - b)
print(a & b)
print(a | b)
a.subtract(b)
print(a)
Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2})
Counter({'a': 3})
Counter({'b': 2, 'a': 1})
Counter({'a': 4, 'd': 4, 'c': 3, 'b': 2})
Counter({'a': 3, 'b': 0, 'c': -3, 'd': -6})

3 Deque

import collections

d = collections.deque([1, 2, 3, 4, 5])
d.append(6)
print(d)
d.appendleft(0)
print(d)
print(d.count(2))
d.clear()
print(d)
d.extend(['a', 'b', 'c'])
print(d)
d.extendleft(['x', 'y', 'z'])
print(d)
print(d.pop())
print(d)
print(d.popleft())
print(d)
d.remove('x')
print(d)
d.reverse()
print(d)
d.rotate(2)
print(d)
deque([1, 2, 3, 4, 5, 6])
deque([0, 1, 2, 3, 4, 5, 6])
1
deque([])
deque(['a', 'b', 'c'])
deque(['z', 'y', 'x', 'a', 'b', 'c'])
c
deque(['z', 'y', 'x', 'a', 'b'])
z
deque(['y', 'x', 'a', 'b'])
deque(['y', 'a', 'b'])
deque(['b', 'a', 'y'])
deque(['a', 'y', 'b'])

4 namedtuple

Immutable!

import collections

Point = collections.namedtuple('Point', ['x', 'y'])
p = Point(x=1, y=2)
print(p)
print(p.x)
Point(x=1, y=2)
1

Author: Pavel Vavilin

Created: 2017-10-25 Wed 22:10

Validate