zoukankan      html  css  js  c++  java
  • python小白-day3 collections系列

    一、计数器(Counter)

    Counter是对字典类型的补充,用于追踪值的出现次数。

    注:因Counter继承于dict类,所以其具备dict类的所有功能

    1 import collections
    2 c1 = collections.Counter('skdhflsdkngsnlknvdlfb')
    3 print(c1)
    Counter

     1、__missing__(self, key)对于不存在的元素,返回计数器为0

    import collections
    c1 = collections.Counter('skdhflsdkngsnlknvdlfb')
    print(c1.__missing__('q'))
    

    2、most_common(self, n=None)显示前n个元素和计数器

    1 import collections
    2 c1 = collections.Counter('skdhflsdkngsnlknvdlfb')
    3 print(c1)
    4 print(c1.most_common(4))
    most_common

    3、elements(self)计数器中的所有元素,注:此处非所有元素集合,而是包含所有元素集合的迭代器

    import collections
    c1 = collections.Counter('skdhflsdkngsnlknvdlfb')
    item = list(c1.elements())
    print(item)
    

    4、update(self, iterable=None, **kwds)更新计数器,其实就是增加;如果原来没有,则新建,如果有则加一

    1 import collections
    2 c = collections.Counter('which')
    3 print(c)
    4 c.update('witch')
    5 print(c)
    6 d = collections.Counter('watch')
    7 c.update(d)
    8 print(c)
    update

    5、subtract(self, iterable=None, **kwds)相减,原来的计数器中的每一个元素的数量减去后添加的元素的数量

    1 import collections
    2 c = collections.Counter('which')
    3 print(c)
    4 c.subtract('witch')
    5 print(c)
    6 d = collections.Counter('watch')
    7 c.subtract(d)
    8 print(c)
    subtract

    二、有序字典(orderedDict )

    orderdDict是对字典类型的补充,他记住了字典元素添加的顺序

    1 import collections
    2 o = collections.OrderedDict()
    3 o['k1'] = 'v1'
    4 o['k2'] = 'v2'
    5 o['k3'] = 'v3'
    6 print(o)
    7 print(o)
    8 print(o)
    9 print(o)
    orderedict

    其余功能等同于字典

    三、默认字典(defaultdict)

    defaultdict是对字典的类型的补充,他默认给字典的值设置了一个类型。

    1 import collections
    2 li = [11,22,33]
    3 ded = collections.defaultdict(list)
    4 for i in li:
    5     ded['k1'].append(i)
    6 print(ded)
    defaultdict

    四、可命名元组(namedtuple)

    根据nametuple可以创建一个包含tuple所有功能以及其他功能的类型。

    1 import collections
    2 person = collections.namedtuple('person','name age gender')
    3 print(type(person))
    4 hetan = person(name = 'hetan',age = 26,gender = 'male')
    5 print(hetan[0])
    6 print('{name} is {age} years old {gender}'.format(name = hetan[0],age = hetan[1],gender = hetan[2]))
    namedtuple

    五、双向队列(deque)

    一个线程安全的双向队列

     1 import queue
     2 q = queue.deque()
     3 for i in [1,2,3,4,5]:
     4     q.append(i)
     5 print(q)
     6 q.appendleft(6)
     7 print(q)
     8 q.popleft()
     9 print(q)
    10 q.rotate(2)
    11 print(q)
    12 li = [7,8,9,10]
    13 q.extendleft(li)
    14 print(q)
    deque

    1、appendleft(n)从左边像队列中增加元素,n表示增加的元素

    2、popleft()从队列的左边删除元素,并且返回删除值

    3、rotate(n)旋转队列,默认时值为1,由右边开始旋转,负值代表左边旋转,n代表从队列的第一个元素开始,n从1开始计数

    4、extendleft(n)从左边扩展队列,n表示扩展的队列

    注:既然有双向队列,也有单项队列(先进先出 FIFO )

    1 import queue
    2 q = queue.Queue()
    3 for i in [1,2,3,4,5]:
    4     q.put(i)
    5 for i in range(5):
    6     print(q.get())
    Queue

  • 相关阅读:
    iOS学习-UILabel
    react js
    代理模式
    利用gitbush从git上下载代码到本地
    VS2017企业版密钥
    office2016产品密钥及激活工具
    .netframe初识
    树的遍历——c#实现
    数据结构——总结
    单例模式
  • 原文地址:https://www.cnblogs.com/hetan/p/5137398.html
Copyright © 2011-2022 走看看