双端队列deque

deque也是C语言写的,性能较高

from collections import deque

将数据进行初始化,数据必须是可迭代对象

user_deque = deque(["hongshaorou1", "hongshaorou2", "hongshaorou3"])

注意:对于列表,我们尽量存放属性相同的元素

使用appendleft将数据从左侧导入

user_deque.appendleft("hongshaorou0")

使用copy会进行浅拷贝(当元素的不可变时候直接拷贝一个,当元素是可变的时候,会同时指向可变元素,改变任何一个可变对象,另一个也改变)

user_deque2 = user_deque.copy()

我们可以使用Python自带的copy进行深拷贝(深拷贝是完全拷贝,无论是否存在可变对象)

import copy

user_deque3 = copy.deepcopy(user_deque)

我们可以使用extend进行将两个双端队列进行合并,在队列本身的基础上

user_deque4 = deque(["hongshaorou11", "hongshaorou22", "hongshaorou33"])
user_deque.extend(user_deque4)  # 该操作并没有任何返回

我们可以使用insert在指定位置插入元素

user_deque.insert(0, "hongshaorou4")

我们可以使用reverse将队列翻转

user_deque.reverse()

注意:Python的魔法函数和类没有直接关系,是解释器可以直接调用的函数

应用: Queue 的内部实现是基于deque

from queue import Queue

双端队列deque和list的区别:

deque是线程安全的(通过GIL来保护),list不是线程安全的
deque是list的子类

    原文作者:海贼之路飞
    原文地址: https://www.jianshu.com/p/a284737804b4
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞