首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python List.pop() 方法深度解析:參數、回傳值、負索引與常見模式完全指南

     編輯:更多程式設計知識

list.pop([index]) 是列表移除並回傳元素的核心方法。不同於 remove(按值刪除)、del(不回傳),pop 同時完成「取出」與「刪除」,是實作堆疊、佇列、輪詢的關鍵。

語法與參數


lst.pop()        # 移除並回傳最後一個元素 (index=-1)
lst.pop(index)   # 移除並回傳指定索引元素
# 回傳:被移除的元素值
# 例外:IndexError (索引超出範圍)

基本範例


a = [123, 'xyz', 'zara', 'abc']

print(a.pop())     # 'abc',列表變 [123, 'xyz', 'zara']
print(a.pop(2))    # 'zara',列表變 [123, 'xyz']
print(a.pop(-1))   # 'xyz',列表變 [123]
print(a.pop(0))    # 123,列表變 []
# a.pop()          # IndexError: pop from empty list

負索引行為詳解

pop(-1) 是堆疊 (LIFO) 操作,pop(0) 是佇列 (FIFO) 出隊(但 O(n) 效能差)。

效能特性

  • pop() / pop(-1):O(1),尾部操作無位移
  • pop(0) / pop(i):O(n),需位移後續所有元素
  • 頻繁頭部彈出請用 collections.deque (popleft() O(1))

常見實戰模式

1. 堆疊(後進先出)


stack = []
stack.append(1)
stack.append(2)
stack.append(3)
while stack:
    print(stack.pop())  # 3, 2, 1

2. 處理巢狀結構(如 AST、DOM 走訪)


def dfs(root):
    stack = [root]
    while stack:
        node = stack.pop()  # 取出並移除
        process(node)
        stack.extend(reversed(node.children))  # 反轉保持左到右

3. 安全彈出:預設值模式


def safe_pop(lst, index=-1, default=None):
    try:
        return lst.pop(index)
    except IndexError:
        return default

# 或使用切片不修改原列表
last = lst[-1] if lst else None

4. 交換兩列表元素


a = [1, 2, 3]
b = [4, 5]
a.append(b.pop())  # a=[1,2,3,5], b=[4]

pop vs remove vs del 對照

索引相當於移除位置
-1len-1最後一個
-2len-2倒數第二個
-len0第一個
方法依據回傳值修改原列表例外
pop(i)索引元素值是IndexError
remove(x)值None是ValueError
del lst[i]索引/切片None是IndexError

善用 pop 的回傳值特性,能寫出簡潔高效的資料結構操作程式碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved