返回顶部
首页 > 资讯 > 后端开发 > Python >3 . python Collectio
  • 730
分享到

3 . python Collectio

pythonCollectio 2023-01-31 07:01:27 730人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

语法:    class collections.deque([iterable[, maxlen]])    返回从左到右初始化的新deque对象(使用append())和来自iterable(可迭代的)的数据。 如果未指定iterabl

语法:

    class collections.deque([iterable[, maxlen]])

    返回从左到右初始化的新deque对象(使用append())和来自iterable(可迭代的)的数据。 如果未指定iterable(迭代),则新的deque为空。


    Deques是堆栈和队列的概括(名称发音为“deck”,是“双端队列”的缩写)。 

    Deques支持线程安全,高效的内存追加和从"双端队列"的弹出,并且在任一方向都具有大致相同的O(1) [注:时间复杂度]性能。

    尽管列表对象支持类似的操作,但是它们针对快速固定长度操作进行了优化,并且会导致pop(0)和insert(0, v)操作的O(n)内存移动成本,这些操作改变底层数据表示的大小和位置。


    如果未指定maxlen或为None,则deques可能会增长到任意长度。 否则,deque被限制为指定的最大长度。一旦有限长度的deque已满,当添加新项目时,相应数量的项目将从相反的一端被丢弃。 有界长度deques提供类似于Unix中尾部过滤器的功能。 它们也可用于跟踪仅涉及最近活动的事物和其他数据池。


Deque对象支持以下方法:

    append(x)                           将x添加到双端队列的右侧。

    appendleft(x)                  将x添加到双端队列的左侧。

    clear()                               删除deque中的所有元素,使其长度为0。

    copy()                                 创建一个deque的浅表副本。3.5版本中的新功能。

    count(x)                             计算deque元素的数量等于x。3.2版本中的新功能

    extend(iterable)                 通过追加iterable参数中的元素来扩展双端队列的右侧。

    extendleft(iterable)        通过追加iterable中的元素来扩展双端队列的左侧。请注意,一系列左边追加结果会颠倒迭代参数中元素的顺序。

    index(x[, start[, stop]])       返回deque中的x的位置(在索引开始处或索引停止之前)。如果未找到,则返回第一个匹配或引发ValueError。

    insert(i, x)                        将x插入位置i处的deque中。3.5版本中的新功能。如果插入会导致有界的deque超出maxlen,则会引发IndexError。

    pop()                                   从deque的右侧移除并返回一个元素。 如果没有元素存在,则引发IndexError。

    popleft()                          从deque的左侧移除并返回一个元素。 如果没有元素存在,则引发IndexError

    remove(value)                   删除第一次出现的值。 如果找不到,则会引发ValueError。

    reverse()                         反序排列deque的元素,然后返回None。New in version 3.2.

    rotate(n=1)                     向右旋转deque n个步。 如果n为负数,则向左旋转。

                                            解释:

                                            当deque不为空时:

                                            向右旋转一个等同于 d.appendleft(d.pop())

                                            向左旋转一个等同于 d.append(d.popleft())

    

    另,Deque对象还提供一个只读属性

        maxlen

        最大的deque的大小,如果×××限,则为None.    [3.1版本引入]


    除上述之外,deques支持迭代、pickling、len(d)、reverse(d)、copy.copy(d)、copy.deepcopy(d),使用 in 运算符进行成员资格测试,以及下标引用,例如:d[-1]。

    索引访问在两端都是O(1),但在中间减慢到O(n)。

    对于快速随机访问,请改用列表。


    从版本3.5开始,deques开始支持__add__(), __mul__(), __imul__()。

    

    下面是例子:

image.png



deque Recipes(食谱???黑人问号脸)

本节介绍处理deques的各种方法。

有界长度的deques提供了类似于Unix中尾部过滤器的功能:

image.png

#返回文件的最后n行


另一种使用deques的方法是通过向右追加并弹出到左边来维护一系列新添加的元素:

image.png


    rotate()方法提供了一种实现双端切片和删除的方法。

    例如,del d[n]的纯python实现依赖于rotate()方法来定位要弹出的元素:

image.png

    为了实现deque切片,使用类似的方法来应用rotate( )来将目标元素置于双端队列的左侧。 

    使用popleft( )删除旧条目,使用extend( )添加新条目,然后反转旋转。 

    通过该方法的细微变化,很容易实现Forth样式的堆栈操作,如dup,drop,swap,over,pick,rot和roll。


--结束END--

本文标题: 3 . python Collectio

本文链接: https://lsjlt.com/news/192165.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 3 . python Collectio
    语法:    class collections.deque([iterable[, maxlen]])    返回从左到右初始化的新deque对象(使用append())和来自iterable(可迭代的)的数据。 如果未指定iterabl...
    99+
    2023-01-31
    python Collectio
  • 2 . python Collectio
    nametuple() 是具有命名字段的元组的工厂函数命名元组为元组中每个位置赋予含义,并允许更具可读性的自编写代码 它们可以在任何使用常规元组的地方使用,并且他们添加了按名称而不是位置索引访问字段的功能。用法:collections.na...
    99+
    2023-01-31
    python Collectio
  • python 内置模块collectio
    1、namedtuple from collections import namedtuple websites = [('Sohu', 'http://www.google.com/', u'张朝阳'),('Sina', 'http://...
    99+
    2023-01-31
    模块 python collectio
  • Python(3)
    一、函数:1、概念和语法、返回值:(1)、概念:函数是python为了代码最大程度地重用和最小代码冗余而提供的基本程序结构。函数是一种设计工具,它能让程序员将复杂的系统分解为可管理的部件。(2)、语法:  def functionName(...
    99+
    2023-01-31
    Python
  • python学习整理--3/3
    今天又重新学起了python这门语言,带着新的目的和又涨一岁的自己,其实早在去年的暑期曾学过一段时间,但是最后无疾而终,这次我真心希望可以掌握一门实用的语言来充实自己,之前的学的不论是c还是java,自我感觉除了做题以外一点都用不上,但感觉...
    99+
    2023-01-31
    python
  • python 3 socket
    server.py:import socketdef main():    host = '127.0.0.1'    port = 5000    server_socket = socket.socket()    server_soc...
    99+
    2023-01-31
    python socket
  • Python 2 和 Python 3
      Guido(Python之父,仁慈的独裁者)在设计 Python3 的过程中,受一篇文章 “Python warts” 的影响,决定不向后兼容,否则无法修复大多数缺陷。---摘录自《流畅的Python》   你可能从来没有听说过学 J...
    99+
    2023-01-31
    Python
  • Python -- 操作字符串[3/3]
     1,splitlines() yuan@ThinkPad-SL510:~$ ipython -nobanner  In [1]: multiline_string = """This    ...: is    ...: a multi...
    99+
    2023-01-31
    字符串 操作 Python
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考...
    99+
    2017-08-12
    Python 3 教程
  • python 函数(3)
    1. 函数小高级 ( 5* ) 1 函数名可以当作变量来使用 def func(): print(123) v1 = func # func代表函数的地址 func() v1() # v1、func的函数地址相同,执...
    99+
    2023-01-31
    函数 python
  • python CookBook 3 1.
    问题:    你需要从一个可迭代对象中拆解出N个元素,但是它可能多于N个元素并导致抛出“too many values to unpack”的异常解决:    python的“带星参数”可以搞定这个问题。比如说,你开了一门课并且决定在期末的...
    99+
    2023-01-31
    python CookBook
  • 3.Python对象
    一.对象 Python 对象 : Python使用对象模型来存储数据.构造任何类型的值都是一个对象,. 尽管Python通常当成一种 "面向对象的编程语言" ,但是你完全能够写出不使用任何类和实例的实用脚本. 所有的Python对象都拥有...
    99+
    2023-01-31
    对象 Python
  • Python作业3
      1.   ***程序  2.    ***程序   3.    ***程序     测试...
    99+
    2023-01-31
    作业 Python
  • python 第3天
    class Hotdog:    def __init__(self):  #初始化对象        self.cooked_level = 0        self.cooked_string ="Raw"        self.c...
    99+
    2023-01-31
    python
  • python 题目3
    磁盘使用情况root@ubuntu:/data/server/spider/面试题# cat 02check_disk.py import timeimport osnew_time = time.strftime('%Y-%m-%d')p...
    99+
    2023-01-31
    题目 python
  • Python练习3
    无意看到老男孩的博文:合格linux运维人员必会的30道shell编程面试题及讲解http://oldboy.blog.51cto.com/2561410/1632876尝试着用刚开始学的python解答一些,权当练手了!如有错误,还请批评...
    99+
    2023-01-31
    Python
  • python--作业3
    作业题目:6题程序:测试:7题程序:测试:...
    99+
    2023-01-31
    作业 python
  • python 函数3
    函数>>> def ds(x):                         return 2 * x + 1>>> ds(5)11>>> lambda x : 2 * x + 1 ...
    99+
    2023-01-31
    函数 python
  • python基础3
    python基础3 交换:a,b=b,a相当于定义了一个元组t=(b,a)然后将t[0]的值给了a,t[1]的值给了b####字典####定义用花括号集合定义若为空的话,会默认为字典,所以集合不能为空子典只能通过关键字来查找值,因为字典是k...
    99+
    2023-01-31
    基础 python
  • 初识python 3
    if 流程控制的使用[root@Client-1 day2]# cat if.py#!/usr/bin/pythonscore = int(raw_input("Please a num: "))if score >= 90:    ...
    99+
    2023-01-31
    python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作