首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

Python collections.deque 完全指南:雙端隊列操作大全

     編輯:關於C++

deque 簡介

collections.deque:雙端隊列,支援兩端 O(1) 插入/刪除,線程安全,適合追蹤最近活動(如日誌、滑動窗口)。

創建與基本屬性

import collections
dq = collections.deque(maxlen=5)  # 固定長度,滿時自動彈出另一端
dq = collections.deque([1,2,3])   # 從可迭代對象初始化
print(dq.maxlen)  # 5 或 None

核心方法大全

方法說明時間複雜度
append(x)右端添加O(1)
appendleft(x)左端添加O(1)
pop()右端彈出並返回O(1)
popleft()左端彈出並返回O(1)
extend(iterable)右端批量添加O(k)
extendleft(iterable)左端批量添加(順序反轉)O(k)
remove(value)刪除第一個匹配值O(n)
rotate(n)右旋 n 步(負數左旋)O(min(k,n))
reverse()原地反轉O(n)
clear()清空O(1)
count(x)計數 x 出現次數O(n)

代碼示例

dq = collections.deque(maxlen=5)
dq.append(1); dq.append(2); dq.append(3)  # deque([1,2,3], maxlen=5)
dq.appendleft(0)                          # deque([0,1,2,3], maxlen=5)
dq.extend([7,8,9])                        # deque([1,2,3,7,8], maxlen=5) 滿了自動擠出左端
dq.extendleft([7,8,9])                    # deque([9,8,7,1,2], maxlen=5) 注意順序反轉
dq.pop()                                  # 8, deque([9,8,7,1], maxlen=5)
dq.popleft()                              # 9, deque([8,7,1], maxlen=5)
dq.rotate(2)                              # deque([7,1,8], maxlen=5) 右旋
dq.rotate(-1)                             # deque([1,8,7], maxlen=5) 左旋
dq.reverse()                              # deque([7,8,1], maxlen=5)

支援的操作

  • 迭代:for x in dq
  • 索引:dq[0], dq[-1]
  • len(dq), reversed(dq)
  • copy.copy(dq), copy.deepcopy(dq)
  • in 操作符:x in dq

適用場景

  • 滑動窗口最大值/最小值
  • BFS 隊列
  • 最近 N 條記錄(如命令歷史、日誌)
  • 雙端緩衝區
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved