1.deque:双向队列,可以从两端添加或删除元素
from collections import deque d = deque([1, 2, 3]) d.append(4) d.appendleft(0) print(d) # deque([0, 1, 2, 3, 4])
deque.rotate()
可以将双向队列旋转n步
from collections import deque d = deque([1, 2, 3]) d.rotate(1) print(d) # deque([3, 1, 2])
deque.extendleft()
:在双向队列的左侧添加多个元素,元素顺序和输入的顺序相反
from collections import deque d = deque([1, 2, 3]) d.extendleft([4, 5]) print(d) # deque([5, 4, 1, 2, 3])
deque.remove()
: 从双向队列中删除第一个找到的值。
from collections import deque d = deque([1, 2, 3, 1]) d.remove(1) print(d) # deque([2, 3, 1])
deque.clear()
: 删除双向队列中的所有元素。
from collections import deque d = deque([1, 2, 3]) d.clear() print(d) # deque([])
deque.count()
: 与普通列表的count()方法类似,返回指定元素在双向队列中出现的次数。
from collections import deque d = deque([1, 2, 3, 1]) print(d.count(1)) # 2
2.命名元组,用于创建具有名称的元组类型
from collections import namedtuple Point = namedtuple('Point', ['x', 'y']) p = Point(1, 2) print(p.x) # 1 print(p.y) # 2
namedtuple._replace()
: 创建一个新的命名元组,用新值替换指定字段。
Point = namedtuple('Point', ['x', 'y']) p1 = Point(1, 2) p2 = p1._replace(y=3) print(p1) # Point(x=1, y=2) print(p2) # Point(x=1, y=3)
3.Counter.elements()
: 获取计数器中所有计数大于零的元素,返回一个迭代器。
from collections import Counter c = Counter(['a', 'b', 'a', 'c', 'b', 'a']) for elem in c.elements(): print(elem, end=' ') # a a a b b c
Counter.most_common()
: 返回计数器中出现次数最多的元素列表,按计数值从大到小排序。
from collections import Counter c = Counter(['a', 'b', 'a', 'c', 'b', 'a']) print(c.most_common()) # [('a', 3), ('b', 2), ('c', 1)]
4.UserString
UserString.center()
: 与普通字符串的center()方法类似,返回一个指定宽度、以当前字符串为中心的新字符串。
from collections import UserString s = UserString('hello') print(s.center(10)) # hello