zoukankan      html  css  js  c++  java
  • python基础之collections模块

    Counter

    Counter是一个简单的计数器,可以统计一段字符串中各个元素出现的次数:

    import collections
    counter_1=collections.Counter('kjsdkfhajksdfkljajkjds')
    print(counter_1)
    Counter({'j': 5, 'k': 5, 's': 3, 'd': 3, 'a': 2, 'f': 2, 'l': 1, 'h': 1})

    当然counter也可以统计列表中每个元素出现的次数:

    list_1=[1,2,3,1,1,2,]
    counter_2=collections.Counter(list_1)
    print(counter_2)
    Counter({1: 3, 2: 2, 3: 1})

    counter是对字典类型的一个补充,它具有字典的所有功能。

    OrderedDict

    有序字典也是对字典的一个补充,顾名思义,他是对key进行序列化的特殊的字典:

    >>> import collections
    >>> d1={'k1':11,'k2':22}     
    >>> d=collections.OrderedDict(d1)
    >>> print(d)
    OrderedDict([('k1', 11), ('k2', 22)])

    defaultdict

    默认字典是一种特殊的字典,它定义了当指定的字典的键不存在时,返回的默认值。

    d=collections.defaultdict(list)
    print(d['k1'])
    []

    namedtuple

    这个功能一般在坐标表示时较为常用,

    >>> t1=collections.namedtuple('t1',['x','y',])   #定义一个名为t1的功能,该功能可以实现以x,y为索引的由两个元素组成的tuple
    >>> t=t1(11,22)
    >>> t.x    #效果等同于t[0]
    1

    namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。

    deque

    特殊的list,具有list的所有功能。它是双向队列,不管是首部还是尾部都可以进行添加和删除。与之相对的是queue,单向队列(FIFO 先进先出)

    >>> q=collections.deque([1,2,3])
    >>> print(q)
    deque([1, 2, 3])
    >>> q.extend([2,3])
    >>> print(q)
    deque([1, 2, 3, 2, 3])
    >>> q.extendleft([2,3])
    >>> print(q)
    deque([3, 2, 1, 2, 3, 2, 3])
    #append也有,当然也有appendleft
    no copyright !! 个人原创博客欢迎转载,可以不保留出处。
  • 相关阅读:
    洛谷 P1430 序列取数
    洛谷 P2042 维护数列
    洛谷 P3391 【模板】文艺平衡树(Splay)
    Permutation UVA
    treap板子(洛谷 P3369 【模板】普通平衡树(Treap/SBT))
    Jumping Jack CodeForces
    Increasing Sequence CodeForces
    Cunning Gena CodeForces
    Hie with the Pie POJ
    ACboy needs your help HDU
  • 原文地址:https://www.cnblogs.com/MnCu8261/p/5428449.html
Copyright © 2011-2022 走看看