CodeGym /課程 /Python SELF TW /排序列表

排序列表

Python SELF TW
等級 7 , 課堂 8
開放

8.1 排序列表

在Python中排序列表是一項重要的操作,它可以幫助你整理數據以方便分析或展示。Python提供了多種列表排序的方法,每種方法都可能在不同的任務和需求中變得有用。

方法 sort()

方法sort()會在原地排序列表,即修改原始列表。它非常高效,並允許通過參數來調整排序。


numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers)  # 輸出 [1, 2, 5, 9] 

可以通過設置參數reverse=True來以相反的順序對列表進行排序。


numbers = [5, 2, 9, 1]
numbers.sort(reverse=True)
print(numbers)  # 輸出 [9, 5, 2, 1]

函數 sorted()

函數sorted()將創建一個新的列表,該列表是原始列表的排序版本。原始列表不會因此改變,這常常使得sorted()成為在需要保持原始數據不變時的偏好選擇。


numbers = [5, 2, 9, 1]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 輸出 [1, 2, 5, 9]
print(numbers)  # 原始列表未改變 [5, 2, 9, 1]

重要的是要記住sort()會改變原列表,而sorted()會返回一個新的排序列表,並保留原始列表不變。當你需要在原地修改數據時使用sort(),而當你想保持數據的原始順序時使用sorted()

8.2 根據鍵排序

有時候需要更複雜的排序方案,或者忽略某些參數進行排序。在這種情況下,「根據鍵排序」就派上用場了。要使用它,需要將特殊參數key傳遞給方法sort()或函數sorted()

作為參數key的值,你需要傳遞一個在比較元素時會使用的函數。

不區分大小寫的字符串比較

比較之前,所有字符串都會轉換為小寫


alist = ["banana", "Orange", "Kiwi", "cherry"]
alist.sort(key=str.lower)
print(alist)  # 輸出 ['banana', 'cherry', 'Kiwi', 'Orange']

範例:排序元組列表

假設你有一個學生的列表,其中每個元素都是一個包含學生姓名和其成績的元組(tuple)。你希望按學生的成績來排序:


students = [('Alice', 88), ('Bob', 75), ('Carol', 96)]

def get_grade(student):
    return student[1]
            
students.sort(key=get_grade)
print(students)  # 輸出 [('Bob', 75), ('Alice', 88), ('Carol', 96)]

範例:排序字典列表

或者你有一個字典列表,其中每個字典都包含學生的信息。要按他們的成績排序,需要寫出這樣的代碼:


students = [
    {'name': 'Alice', 'grade': 88},
    {'name': 'Bob', 'grade': 75},
    {'name': 'Carol', 'grade': 96}
]
        
def get_grade(student):
    return student['grade']
        
sorted_students = sorted(students, key=get_grade)
print(sorted_students)  # 輸出 [{'name': 'Bob', 'grade': 75}, {'name': 'Alice', 'grade': 88}, {'name': 'Carol', 'grade': 96}]
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION