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

Python List.reverse() 方法詳解:就地反轉、O(n) 效能、與 reversed/slicing 差異對照

     編輯:更多程式設計知識

list.reverse() 將列表就地反轉,不建立新列表、不回傳值。是原地修改列表順序的最高效方式。

語法與行為


lst.reverse()
# 參數:無
# 回傳:None
# 效能:O(n) 時間,O(1) 額外空間
# 行為:修改原列表,首尾交換至中間

基本範例


a = [136, 'xyz', 'zara', 'abc', 'xyz', 'hema']
a.reverse()
print(a)  # ['hema', 'xyz', 'abc', 'zara', 'xyz', 136]

三種反轉方式對照

方式程式碼修改原列表回傳值記憶體適用場景
reverse()lst.reverse()是NoneO(1)就地反轉大列表、記憶體敏感
reversed()list(reversed(lst))否迭代器/新列表O(n)需保留原列表、單次遍歷
切片 [::-1]lst[::-1]否新列表O(n)簡潔建立反轉副本

進階用法

1. 反向遍歷不修改原列表


for item in reversed(lst):
    process(item)
# 或
for item in lst[::-1]:
    process(item)

2. 排序後反轉 = 降序


lst.sort()
lst.reverse()  # 現在是降序
# 等價於
lst.sort(reverse=True)

3. 自訂物件反轉


class Node:
    def __init__(self, val):
        self.val = val
    def __repr__(self):
        return f'Node({self.val})'

nodes = [Node(i) for i in range(5)]
nodes.reverse()
print(nodes)  # [Node(4), Node(3), Node(2), Node(1), Node(0)]

4. 實作雙端佇列反轉


from collections import deque
dq = deque([1, 2, 3])
# deque 無 reverse(),需轉列表或用 rotate
dq = deque(reversed(dq))
print(dq)  # deque([3, 2, 1])

常見錯誤


# 錯誤:以為有回傳值
reversed_lst = lst.reverse()  # None!
print(reversed_lst)  # None

# 正確
lst.reverse()
# 或
reversed_lst = lst[::-1]

記住:reverse() 是動作 (Verb),執行完列表就變了;reversed()/[::-1] 是名詞 (Noun),產出新序列。語意區分清晰,用對地方程式碼才易讀。

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