1. 程式人生 > >python collections 模組中 deque

python collections 模組中 deque

摘要:使用list儲存資料時,按索引訪問元素很快,但是插入和刪除元素就很慢了,因為list是線性儲存,資料量大的時候,插入和刪除效率很低。deque是為了高效實現插入和刪除操作的雙向列表,適合用於佇列和棧.

1.建立deque

from collections import deque
d = deque()

2.新增

from collections import deque
# 預設在右邊新增
d = deque()
d.append(1)
print(d)  # deque([1])

# 在左邊新增appendleft()
d.appendleft(2)
print(d)    # deque([2, 1])

# 在指定位置插入元素insert()
d.insert(1,0)
print(d)    # deque([2, 0, 1])

# 將列表中的每一個元素新增進deque的右邊
d.extend([7,8,9])
print(d)    # deque([2, 0, 1, 7, 8, 9])

# 將列表中的每一個元素新增進deque的左邊
d.extendleft([4,5,6])
print(d)    # deque([6, 5, 4, 2, 0, 1, 7, 8, 9])

2.刪除

from collections import deque

# 右刪除,不能新增引數
d = deque()
d.extend([1,2,3,4,5,6])
d.pop() 
print(d)    # deque([1, 2, 3, 4, 5])

# 左刪除,不能新增引數
d.popleft() 
print(d)    # deque([2, 3, 4, 5])

# 刪除指定位置的元素,從1開始的
d.remove(2) 
print(d)    # deque([3, 4, 5])

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

3.實現佇列的反轉

from collections import deque

d = deque()
d.extend([1,2,3,4])
d.reverse() 
print(d)    # 將佇列倒序,此時 d=deque([4, 3, 2, 1])

4.實現佇列的旋轉

from collections import deque

d = deque()
d.extend([1,2,3,4,5,6])
d.rotate(2) # 右旋轉2個位置
print(d)