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的子类