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