您的位置:首页 > 编程语言 > Python开发

python3 内置模块collections.deque(双向队列)的用法

2019-06-26 09:44 1601 查看

为什么使用双向队列:

双向队列在列表的头部和尾部均提供O(1)的添加删除操作,但是传统的列表只能对列表尾部
提供O(1)的添加删除操作,而对列表的头部进行同样的操作则是O(n)。

创建双向队列

from collections import deque
d = deque()

append(向右边添加一个元素)

d.append(1)
d.append(2)
print(d)
# deque([1, 2])

appendleft(向左边添加一个元素)

d.appendleft(3)
print(d)
# deque([3, 1, 2])

clear(清空列表)

d.clear()
print(d)
# deque([])

copy(浅拷贝)

d.append(10)
new_d = d.copy()
print(new_d)
# deque([10])

count(返回指定元素的出现次数)

d.append(10)
print(d.count(10)
# 2

extend(从队列右边扩展一个列表的元素)

d.extend([1,2,3])
print(d)
# deque([10, 10, 1, 2, 3])

extendleft(从队列左边扩展一个列表的元素)

d.extendleft([3,4,5])
print(d)
# deque([5, 4, 3, 10, 10, 1, 2, 3])

index(查找某个元素的索引位置)

print(d.index(4))
# 1

insert(在指定位置插入元素)

d.insert(2,"a")
print(d)
# deque([5, 4, 'a', 3, 10, 10, 1, 2, 3])

pop(获取最右边一个元素,并在队列中删除)

x = d.pop()
print(x,d)
# 3 deque([5, 4, 'a', 3, 10, 10, 1, 2])

popleft(获取最左边一个元素,并在队列中删除)

x = d.popleft()
print(x,d)
# 5 deque([4, 'a', 3, 10, 10, 1, 2])

remove(删除指定元素)

d.remove('a')
print(d)
# deque([4, 3, 10, 10, 1, 2])

reverse(队列反转)

d.reverse()
print(d)
# deque([2, 1, 10, 10, 3, 4])

rotate(把右边元素放到左边)

d.rotate(1)
print(d)
# deque([4, 2, 1, 10, 10, 3])
d.rotate(2)   #指定次数,默认1次
print(d)
# deque([10, 3, 4, 2, 1, 10])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: