双向队列dequePython小案例合集。
大家好,本期来讲一下双向队列deque。在讲deque之前先看这么一段代码:
·先定义一个list,list里面有1亿个元素,8个0。
·然后来一个for循环,让for循环一百次,每次for循环从list的末尾删除一个数据。
·然后计算一下一共花费的时长,start等于time,导入一下,time剪掉start。
·然后运行一下程序,发现它几乎不耗时间,复制一遍,让每次循环让list从头部删除第一个数据。
·再来试一下,发现程序卡住了,一共耗费了5秒多。这是因为list从尾部来删除数据的时候就直接删除数据,但如果从头部删除数据,第一步先是删除头部的数据,然后将末尾的数据依次,比如第二个数据就会移到第一个,第三个就会移到第二个,这样依次的移过来,它花费的时间主要花费在这里。
所以实战中如果有这样的场景要从list的头部来删除数据,最好是不要用list。
·可以从collections里面导入一个deque,把deque当作list用。创建一个deque对象,同样的range,8个0。
·复制前面的代码,把list变成deque,先从尾部删除数据,再复制一份,这里是que,这是从尾部删除,如果是从头部就popleft。
·再运行一下程序,这个是list从尾部删除数据,list从头部删除数据,deque从尾部,deque从头部,发现它的耗时还是不变的,都是几乎是0秒。
本期的案例就到这里,谢谢大家。