python3:deque和list的区别

版权声明:转载 或者复制请标注来源 https://blog.csdn.net/qq_34979346/article/details/83540389

大家都知道list,很少有人用deque,更没有人去解释两个区别.
deque是Python中stack和queue的通用形式,也就是既能当做栈使用,又能当做双向队列,list是单向队列.

只要list里有的方法,deque 都可以用. 我列出如下 :

1 list.append(obj)
在列表末尾添加新的对象
2 list. count (obj)
统计某个元素在列表中出现的次数
3 list.extend(seq)
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4 list.index(obj)
从列表中找出某个值第一个匹配项的索引位置
5 list.insert(index, obj)
将对象插入列表
6 list.pop([index=-1])
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7 list.remove(obj)
移除列表中某个值的第一个匹配项
8 list.reverse()
反向列表中元素
9 list.sort(cmp=None, key=None, reverse=False)
对原列表进行排序

但是deque 的方法list是不能用的例如:

appendleft(x) 头部添加元素
extendleft(iterable) 头部添加多个元素
popleft() 头部返回并删除
rotate(n=1) 旋转
maxlen 最大空间,如果是无边界的,返回None

deque 特殊方法介绍

通过上边的比较就可以证明deque是双向队列. 比如appendleft,extendleft,popleft 可以在头部进行增加和删除.,
这些方法比较简单,可以自己尝试下.
下边介绍特殊方法,
rotate(n=2) 意思是在序列的末尾两位移动到前面. 看下例子

from collections import deque

b=deque("ABCDEFG")
print(b)
b.rotate(2)
print(b)
b.rotate(3)
print(b)

打印结果如下:

deque(['A', 'B', 'C', 'D', 'E', 'F', 'G'])
deque(['F', 'G', 'A', 'B', 'C', 'D', 'E'])
deque(['C', 'D', 'E', 'F', 'G', 'A', 'B'])

maxlen 最大空间,如果是无边界的,返回None
这个可以指定 deque 的长度,通过下边的例子,体会下用处

from collections import deque

b=deque("ABCDEFG",8)
print(b)
b.extendleft("WERTY")
print(b)

打印结果:

deque(['A', 'B', 'C', 'D', 'E', 'F', 'G'], maxlen=8)
deque(['Y', 'T', 'R', 'E', 'W', 'A', 'B', 'C'], maxlen=8)

由于只能容纳8位, (D,E,F,G) 被删除掉.

猜你喜欢

转载自blog.csdn.net/qq_34979346/article/details/83540389
今日推荐