zoukankan      html  css  js  c++  java
  • Python python对象 deque

    # deque对象
    '''
    class collections.deque([ iterable [,maxlen ] ] )
    返回一个从左到右(使用append())初始化的新deque对象,其中包含来自iterable的数据。如果未指定iterable,则新的deque为空。
    
    Deques是堆栈和队列的概括(名称发音为“deck”,是“双端队列”的缩写)。Deques支持线程安全,内存有效的附加和从双端队列的弹出,在任一方向上具有大致相同的O(1)性能。
    
    尽管list对象支持类似的操作,但它们针对快速固定长度操作进行了优化,并且导致O(n)内存移动成本pop(0)和操作,这些成本 改变了底层数据表示的大小和位置。insert(0, v)
    
    如果未指定maxlenNone,则deques可能会增长到任意长度。否则,双端队列限制为指定的最大长度。一旦有界长度双端队列已满,当添加新项目时,从对方端丢弃相应数量的项目。有界长度deques提供类似于tailUnix中的过滤器的功能。它们还可用于跟踪仅涉及最近活动的事务和其他数据池。
    
    Deque对象支持以下方法:
    
    append(x )
    将x添加到双端队列的右侧。
    
    appendleft(x )
    将x添加到双端队列的左侧。
    
    clear()
    删除deque中的所有元素,使其长度为0。
    
    copy()
    创建双端队列的浅表副本。
    
    版本3.5中的新功能。
    
    count(x )
    计算deque元素的数量等于x。
    
    版本3.2中的新功能。
    
    extend(可迭代的)
    通过附加可迭代参数中的元素来扩展双端队列的右侧。
    
    extendleft(可迭代的)
    通过附加来自iterable的元素来扩展双端队列的左侧。注意,左边追加的系列会导致反转迭代参数中元素的顺序。
    
    index(x [,start [,stop ] ] )
    返回deque 中x的位置(在索引开始时或 索引停止之前)。返回第一个匹配或ValueError如果未找到则引发 。
    
    版本3.5中的新功能。
    
    insert(i,x )
    将x插入位置i的双端队列中。
    
    如果插入会导致有界双端超过maxlen,IndexError则会引发a。
    
    版本3.5中的新功能。
    
    pop()
    从双端队列的右侧移除并返回一个元素。如果没有元素,则提出一个IndexError。
    
    popleft()
    从双端队列的左侧移除并返回一个元素。如果没有元素,则提出一个IndexError。
    
    remove(值)
    删除第一次出现的值。如果没有找到,提出一个 ValueError。
    
    reverse()
    在原位反转deque的元素然后返回None。
    
    版本3.2中的新功能。
    
    rotate(n = 1 )
    向右旋转deque n步。如果n为负数,则向左旋转。
    
    当双端队列不为空时,向右d.appendleft(d.pop())旋转一步相当于,向左旋转一步相当于d.append(d.popleft())。
    
    Deque对象还提供一个只读属性:
    
    maxlen
    一个双端队列的最大大小或None无边界。
    
    '''
    from collections import deque
    
    var = deque(['shanghai','beijing','shenzhen','guangzhou'])
    
    # 队列遵从先进先出的原则,在设定maxlen 的情况下,后进去的会将先进去的挤出去
    de = deque(maxlen=4)
    print(de.maxlen) #4
    
    de.append("Tom")
    de.append("Sarah")
    de.append("Tony")
    de.append("Jim")
    de.append("Charles")
    print(de)
  • 相关阅读:
    idea配置tomcat运行按钮置灰,下拉没有自定义的tomcat选项
    配置多版本jdk,自由切换jdk版本
    五年经验程序员告诉你,如何确定自己是否适合做程序员
    你的编程能力从什么时候开始突飞猛进?
    10 个提升效率的Linux小技巧
    8 种经常被忽视的 SQL 错误用法,你有没有踩过坑?
    十大优秀编程项目,让你的简历金光闪闪
    一文掌握 Lambda 表达式
    一文详解微服务架构(一)
    Java的参数传递是「按值传递」还是「按引用传递」?
  • 原文地址:https://www.cnblogs.com/pickKnow/p/10937810.html
Copyright © 2011-2022 走看看