官方文档不推荐使用列表 因为列表删除第一个元素会把剩余元素向左移一位 速度很慢 官方推荐的是 collections下的deque
记录一下 防止忘记
from collections import deque
d = deque(‘内容’,maxlength) 内容可以是推导式 也可以直接写内容 内容写在一起 比如'123' 结果会自动分割成[’1‘,’2‘,’3‘]三个元素 想写成一个元素可以写成列表 [’123‘] maxlength是最大长度 设置了以后 deque达到最大长度 再增加不会成功 但不会报错
相关函数
append(x) 在最后插入 x
appendleft(x) 在最左端插入 x
clear() 移除所有元素
copy() 创建一份浅拷贝
count(x) 统计deque中等于x元素的个数
extend(推导式/内容) 往deque最后追加内容
extendleft(推导式/内容) 往deque左边增加内容 添加的内容会被反过来
index(x,[start],[end]) 返回x第一次出现的位置 start和end是范围 可以不写 如果没有 引发ValueError
insert(c,x) 在c的位置 插入x 如果超出maxlength限制 引发IndexError
pop() 移除最后一个元素 返回值是该元素 如果是空deque 引发IndexError
popleft() 移除最左侧元素 返回值是该元素 如果是空deque 引发IndexError
remove(value) 移除第一个value 如果没有的话 引发ValueError
reverse() 将deque元素逆序排列
rotate(n=1) 把deque向右循环一位 一下子有点难理解 等效于最后一个元素移到第一 其他元素向后移动一位 负数即向左循环移动一位
属性
只读属性 maxlen 最大长度 没有就是None
除了以上操作,deque 还支持迭代、封存、len(d)
、reversed(d)
、copy.copy(d)
、copy.deepcopy(d)
、成员检测运算符 in
以及下标引用例如通过 d[0]
访问首个元素等。 索引访问在两端的复杂度均为 O(1) 但在中间则会低至 O(n)。 如需快速随机访问,请改用列表
标签:deque,IndexError,python,元素,队列,内容,移除,copy,实现 From: https://www.cnblogs.com/mltooo/p/17627294.html