Python - 排序列表

你好,有抱负的 Python 程序員!今天,我們將深入探討 Python 中排序列表的奇妙世界。如果你是编程新手,也別擔心——我會通過大量的示例和解釋引導你逐步完成每個步驟。在本教程結束時,你將能夠像專家一樣排序各種列表!

Python - Sort Arrays

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)

讓我們來分解一下:

  1. 我們定義了一個名為 bubble_sort 的函數,該函數接受一個列表作為輸入。
  2. 我們獲取列表的長度並將其存儲在 n 中。
  3. 我們使用兩個嵌套循環來比較鄰近的元素。
  4. 如果一個元素大於下一個元素,我們交換它們。
  5. 我們重複此過程,直到整個列表被排序。

當你運行此代碼時,你會看到:

排序後的列表: [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