如何在 Python 中對列表進行排序(升序和降序)

了解如何在 Python 中使用 sort() 方法和sorted() 函數對清單進行排序。發現自訂鍵排序和逆序範例。

在編輯器中嘗試此解決方案

概述

對資料進行排序是程式設計中最常見的任務之一,無論您是按年齡排序使用者設定檔、按價格列出產品還是組織搜尋結果。 Python 提供了兩種內建的、高度最佳化的清單排序方法:「list.sort()」方法和「sorted()」函數。兩者都使用名為 Timsort 的高效排序演算法,其運行時間複雜度為 O(N log N)。

兩者之間的主要區別是可變性。 「list.sort()」方法對清單進行就地排序,這表示它直接修改原始清單並傳回「None」。另一方面,「sorted()」函數保持原始清單不變並傳回一個全新的排序清單。這種區別至關重要:當您想要節省記憶體並且不需要原始順序時,請使用「sort()」;當您需要保持原始清單完整或對元組或字典等非列表可迭代物件進行排序時,請使用「sorted()」。

兩種排序方法都接受兩個可選的關鍵字參數:「reverse」和「key」。 `reverse` 參數是布林值;將其設為「True」以降序(反向)順序對清單進行排序。 “key”參數接受一個在比較之前應用於每個元素的函數。這允許複雜的排序邏輯,例如按長度對字串列表進行排序,或按特定鍵對字典列表進行排序。

程式碼和執行輸出

此程式碼示範了使用 sort() 和sorted() 對數字清單進行排序、反向排序以及按字串長度自訂鍵排序。

numbers = [42, 7, 12, 89, 23]

# 1. Using sorted() (returns new list)
new_sorted = sorted(numbers)
print("Original:", numbers)
print("Sorted new list:", new_sorted)

# 2. Using sort() (in-place modification)
numbers.sort()
print("Modified original list:", numbers)

# 3. Sorting in reverse (descending)
numbers.sort(reverse=True)
print("Reverse sorted list:", numbers)

# 4. Custom sorting (by string length)
words = ["banana", "pear", "apple", "fig"]
words.sort(key=len)
print("Sorted by length:", words)
端子輸出
Original: [42, 7, 12, 89, 23]
Sorted new list: [7, 12, 23, 42, 89]
Modified original list: [7, 12, 23, 42, 89]
Reverse sorted list: [89, 42, 23, 12, 7]
Sorted by length: ['fig', 'pear', 'apple', 'banana']

逐步實施

  • 使用sorted()函數對清單的副本進行排序,而不更改原始資料。
  • 直接在列表物件上使用 .sort() 方法就地修改它並節省記憶體。
  • 將reverse=True作為參數以降序對項目進行排序。
  • 使用 key=lambda x: ... 根據自訂屬性(如長度或巢狀值)對元素進行排序。

常見問題解答

list.sort()和sorted()有什麼差別?

list.sort() 就地修改清單並傳回 None,而sorted() 則保持原始清單不變並傳回一個新的排序清單。

如何按鍵對字典列表進行排序?

將 key 參數與 lambda 函數或operator.itemgetter 一起使用。例如:list.sort(key=lambda item: item["age"])。

相關主題

推薦的 Python 資源

透過相關的互動式教學、備忘單和程式碼比較來擴展您的知識。