Python - 排序列表
你好,有抱负的 Python 程序員!今天,我們將深入探討 Python 中排序列表的奇妙世界。如果你是编程新手,也別擔心——我會通過大量的示例和解釋引導你逐步完成每個步驟。在本教程結束時,你將能夠像專家一樣排序各種列表!
Python 中的列表是什麼?
在我們開始排序之前,先來簡單談談 Python 中的列表。在 Python 中,我們通常使用列表來表示列表。列表是一系列可以不同類型的項目的集合。例如:
fruits = ["蘋果", "香蕉", "櫻桃", "日期"]
numbers = [42, 8, 15, 16, 23]
使用排序算法排序列表
讓我們從一個稱為泡沫排序的基本排序算法開始。它不是最有效的算法,但對於初學者來說很容易理解。
泡沫排序
以下是泡沫排序的一個簡單實現:
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
# 示例使用
numbers = [64, 34, 25, 12, 22, 11, 90]
sorted_numbers = bubble_sort(numbers)
print("排序後的列表:", sorted_numbers)
讓我們來分解一下:
- 我們定義了一個名為
bubble_sort
的函數,該函數接受一個列表作為輸入。 - 我們獲取列表的長度並將其存儲在
n
中。 - 我們使用兩個嵌套循環來比較鄰近的元素。
- 如果一個元素大於下一個元素,我們交換它們。
- 我們重複此過程,直到整個列表被排序。
當你運行此代碼時,你會看到:
排序後的列表: [11, 12, 22, 25, 34, 64, 90]
有趣的事實:泡沫排序之所以這麼命名,是因為較小的元素在每次迭代中都會“泡沫”到列表的頂部!
使用列表的 sort() 方法排序
Python 列表有一個內置的 sort()
方法,可以讓排序變得更加簡單。讓我們看看它是如何工作的:
# 排序數字
numbers = [64, 34, 25, 12, 22, 11, 90]
numbers.sort()
print("排序後的數字:", numbers)
# 排序字符串
fruits = ["香蕉", "櫻桃", "蘋果", "日期"]
fruits.sort()
print("排序後的水果:", fruits)
輸出:
排序後的數字: [11, 12, 22, 25, 34, 64, 90]
排序後的水果: ['蘋果', '香蕉', '櫻桃', '日期']
sort()
方法會修改原始列表。這就像整理你的房間一樣——最終一切都有序,但這仍然是你的房間!
降序排序
你也可以通過添加 reverse=True
參數來按降序排序:
numbers = [64, 34, 25, 12, 22, 11, 90]
numbers.sort(reverse=True)
print("排序後的數字(降序):", numbers)
輸出:
排序後的數字(降序): [90, 64, 34, 25, 22, 12, 11]
使用 sorted() 函數排序
sorted()
函數是 Python 中排序的另一個強大工具。與 sort()
不同,它不會修改原始列表,而是返回一個新的已排序列表。
# 排序數字
numbers = [64, 34, 25, 12, 22, 11, 90]
sorted_numbers = sorted(numbers)
print("原始數字:", numbers)
print("排序後的數字:", sorted_numbers)
# 排序字符串
fruits = ["香蕉", "櫻桃", "蘋果", "日期"]
sorted_fruits = sorted(fruits)
print("原始水果:", fruits)
print("排序後的水果:", sorted_fruits)
輸出:
原始數字: [64, 34, 25, 12, 22, 11, 90]
排序後的數字: [11, 12, 22, 25, 34, 64, 90]
原始水果: ['香蕉', '櫻桃', '蘋果', '日期']
排序後的水果: ['蘋果', '香蕉', '櫻桃', '日期']
將 sorted()
看作是創建列表的副本並排序該副本,而讓原始列表保持不變。這就像拍攝你亂糟糟房間的照片,然後在照片中將一切整齊排列,而你的實際房間則保持原樣!
使用自定義鍵排序
sorted()
的一個最酷的功能是能夠使用自定義排序鍵。假設我們想根據單詞的長度對一個單詞列表進行排序:
words = ["python", "is", "awesome", "and", "fun"]
sorted_words = sorted(words, key=len)
print("按長度排序:", sorted_words)
輸出:
按長度排序: ['is', 'and', 'fun', 'python', 'awesome']
在這裡,我們使用 len
作為鍵函數。Python 對每個項目應用此函數並根據結果進行排序。
排序方法比較
讓我們將我們學過的排序方法總結在一個方便的表格中:
方法 | 修改原始 | 返回新列表 | 可以使用自定義鍵 |
---|---|---|---|
泡沫排序 | 是 | 否 | 否 |
list.sort() |
是 | 否 | 是 |
sorted() |
否 | 是 | 是 |
結論
恭喜!你剛剛學會了在 Python 中排序列表的幾種方法。從實現自己的排序算法到使用 Python 的內置方法,你現在有了解決數據組織的工具。
記住,排序就像整理書架上的書一樣——有許多方法可以做到這一點,最佳方法取決於你想達到什麼目的。練習使用不同類型的數據和排序方法,成為 Python 排序大師!
編程愉快,願你的列表永遠完美排序! ??
Credits: Image by storyset