Модуль 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