zoukankan      html  css  js  c++  java
  • collections模块

    在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。

    1.namedtuple: 生成可以使用名字来访问元素内容的tuple

    2.deque: 双端队列,可以快速的从另外一侧追加和推出对象

    3.Counter: 计数器,主要用来计数

    4.OrderedDict: 有序字典

    5.defaultdict: 带有默认值的字典

    deque

    使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低。

    deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:

    什么是队列
    先进先出
    import queue
    q = queue.Queue()
    
    print(q.qsize())
    
    q.put(1)
    q.put('a')
    q.put((1,2,3))
    q.put(({'k':'v'}))
    
    print(q.qsize())
    
    print('q : ',q)
    print('get : ',q.get())
    
    print(q.qsize())
    结果:
    0
    4
    q :  <queue.Queue object at 0x0000018C76DB5F60>
    get :  1
    3
    
    deque 双端队列
    from collections import deque
    dq = deque()
    dq.append(2)
    dq.append(5)
    dq.appendleft('a')
    dq.appendleft('b')
    print(dq)
    结果:
    deque(['b', 'a', 2, 5])
    
    
    from collections import deque
    dq = deque()
    dq.append(2)
    dq.append(5)
    dq.appendleft('a')
    dq.appendleft('b')
    print(dq)
    结果:
    deque(['b', 'a', 2, 5])
    print(dq.pop())
    结果:5
    print(dq)
    结果:deque(['b', 'a', 2])
    print(dq.popleft())
    结果:b
    print(dq)
    结果:deque(['a', 2,5])
    print(dq.remove('a'))
    print(dq)
    结果:deque(['b', 2, 5])
    
    print(dq.insert(2,'123'))
    print(dq)
    结果:deque(['b', 'a', '123', 2, 5])
    # 总结
    # 在insert remove的时候 deque的平均效率要高于列表
    # 列表根据索引查看某个值的效率要高于deque
    # append 和pop对于列表的效率是没有影响
  • 相关阅读:
    告别被拒,如何提升iOS审核通过率(上篇)
    Linux 学习总结(二)
    Linux 学习总结(一)
    Navicat for mysql 破解
    IDEA2017-破解方法
    VmWare15 许可证
    Java 中的锁
    JVM 参数调优
    Tcp/Ip 三次握手与四次挥手
    Java 集合面试总结
  • 原文地址:https://www.cnblogs.com/chenyibai/p/9451917.html
Copyright © 2011-2022 走看看