deque?!这么好用!

好久没更新了,最近刷leetcode老刷到deque,那就来认真总结一下吧!

deque的全称是“double-end queue”,它是一种栈和队列的广义实现,deque支持线程安全,以近似于O(1)的性能在deque两端插入和删除数据,尽管list也支持相似的操作,但是他主要在固定长度的操作上的优化,而在pop(0)和insert(0,v)上有O(n)的时间复杂度。

deque支持如下的方法:

append(x), 将x添加到deque的右侧;

appendleft(x), 将x添加到deque的左侧;

clear(), 将deque中的元素全部删除,最后长度为0;

count(x), 返回deque中元素等于x的个数;

extend(iterable), 将可迭代变量iterable中的元素添加至deque的右侧;

extendleft(iterable), 将变量iterable中的元素添加至deque的左侧,往左侧添加序列的顺序与可迭代变量iterable中的元素相反;

pop(), 移除和返回deque中最右侧的元素,如果没有元素,将会报出IndexError;

popleft(), 移除和返回deque中最左侧的元素,如果没有元素,将会报出IndexError;

remove(value), 移除第一次出现的value,如果没有找到,报出ValueError;

reverse(), 反转deque中的元素,并返回None;

rotate(n), 从右侧反转n步,如果n为负数,则从左侧反转,d.rotate(1)等于d.appendleft(d.pop());

maxlen, 只读的属性,deque的最大长度,如果无解,就返回None;

除了以上的方法之外,deque还支持迭代、序列化、len(d)、reversed(d)、copy.copy(d)、copy.deepcopy(d),通过in操作符进行成员测试和下标索引,索引的时间复杂度是在两端是O(1),在中间是O(n),为了快速获取,可以使用list代替。

参考:python collections模块详解 - dahu1 - 博客园 (cnblogs.com)

posted @ 2022-03-08 10:07  Syrena12  阅读(130)  评论(0)    收藏  举报