Python - 列表排序

你好,有抱負的程式設計師!今天,我們將深入探究 Python 中排序列表的精彩世界。作為你友善的鄰居電腦老師,我非常高興能夠引導你完成這次學習之旅。所以,拿起你最喜歡的飲料,放鬆一下,讓我們一起踏上這次排序冒險吧!

Python - Sort Lists

Python 中的列表排序

在我們深入研究排序的細節之前,先花點時間了解 Python 中的列表是什麼。想象一下,你有一堆寫有不同的名字的便箋紙。在 Python 中,列表就像這些便箋紙的集合,其中每張紙都是列表中的一個項目。

排序就像是將這些便箋紙按照特定的順序排列。這可能是我們定義的字母順序、數字順序或任何其他順序。Python 為我們提供了一些便捷的工具來快速有效地進行排序。

為何要排序?

你可能會想,“我們為何需要排序列表?”讓我告訴你一個小故事。從前,我有一個喜歡收集動作人偶的學生。他有好幾百個,但由於亂七八糟的,他永遠找不到他想找的那個。有一天,他決定按角色名字的字母順序對它們進行排序。突然間,找任何一個人偶都變得輕鬆!這就是排序的力量——它幫助我們更容易地組織和找到東西。

在程式設計中,排序後的數據可以讓我們的代碼更有效率,特別是我們需要搜索特定項目或以結構化的方式呈現信息時。

使用 sort() 方法排序列表

讓我們從 Python 中排序列表最簡單的方式開始:sort() 方法。這個方法就像是一個神奇的咒語,可以將列表中的項目按照升序重新排列。

這裡有一個簡單的例子:

水果 = ["香蕉", "蘋果", "櫻桃", "日期"]
水果.sort()
print(水果)

輸出:

['蘋果', '香蕉', '櫻桃', '日期']

這裡發生了什麼?sort() 方法將我們的水果按字母順序排列。這就像讓你的朋友為照片排隊,從最矮到最高!

逆序排序

但我們如果想按降序排序呢?沒問題!我們可以在我們的排序咒語中加一點變化:

數字 = [5, 2, 8, 1, 9]
數字.sort(reverse=True)
print(數字)

輸出:

[9, 8, 5, 2, 1]

通過添加 reverse=True,我們告訴 Python 將我們的數字從大到小排序。這就像為火箭發射倒數一樣!

使用 sorted() 函數排序列表

現在,讓我們介紹另一個強大的工具:sorted() 函數。當 sort() 會改變原始列表時,sorted() 則創建一個新的排序後的列表,而不會觸碰原始列表。這就像擁有一台複印機,它不僅能複製你的文件,還能將它們按順序排列!

這是它的工作原理:

顏色 = ["紅色", "藍色", "綠色", "黃色"]
排序顏色 = sorted(顏色)
print("原始列表:", 顏色)
print("排序後列表:", 排序顏色)

輸出:

原始列表: ['紅色', '藍色', '綠色', '黃色']
排序後列表: ['藍色', '綠色', '紅色', '黃色']

看,我們的原始 顏色 列表保持不變!這就是 sorted() 的美麗之處——它不會破壞原始數據。

使用回調函數排序列表項目

現在,讓我們將排序遊戲提升到新的水平,使用回調函數。這些就像給我們的排序咒語提供特殊指示。

想象一下,你有一個你喜歡的書籍列表,但你想按書名長度對它們進行排序。以下是我們如何做到這一點:

書籍 = ["哈利波特", "霍比特人", "傲慢與偏見", "殺死一隻知更鳥"]

def 書名長度(書):
return len(書)

排序書籍 = sorted(書籍, key=書名長度)
print(排序書籍)

輸出:

['霍比特人', '哈利波特', '傲慢與偏見', '殺死一隻知更鳥']

這是怎麼回事?我們創建了一個函數 書名長度,它返回書名的長度。然後,我們告訴 sorted() 使用這個函數作為其排序鍵。這就像告訴你的朋友根據他們的名字長度排隊一樣!

排序字典

讓我們再升級一個檔次。如果我們有一個字典列表呢?不用擔心,Python 對我們來說不成問題:

學生 = [
{"name": "Alice", "grade": 85},
{"name": "Bob", "grade": 92},
{"name": "Charlie", "grade": 78}
]

排序學生 = sorted(學生, key=lambda x: x["grade"], reverse=True)
print(排序學生)

輸出:

[{'name': 'Bob', 'grade': 92}, {'name': 'Alice', 'grade': 85}, {'name': 'Charlie', 'grade': 78}]

在這裡,我們使用一個 lambda 函數(一個迷你函數)來告訴 Python 根據每個字典中的 'grade' 鍵進行排序。這就像根據分數組織你的成績單一樣!

排序方法總結

讓我們用一個方便的表格來總結我們學過的排序方法:

方法 描述 修改原始列表? 可以逆序排序? 可以使用自定義鍵?
sort() 列表方法
sorted() 內建函數 否(創建新列表)

記住,排序就像是程式設計中的一種超能力。它幫助你組織數據,使你的程序更有效率且更容易處理。練習這些技巧,你很快就會像專業人士一樣排序列表!

當我們結束我們的排序冒險時,我希望你覺得這次旅程既充實又愉快。記住,在程式設計中,就像在生活中一樣,有時我們需要整理事物,才能清楚地看到更大的圖景。繼續編碼,繼續學習,最重要的是,繼續享受 Python 帶來的樂趣!

Credits: Image by storyset