[Python] 使用 `sort` 和 `sorted` 進行 Python 清單排序的方法

在許多應用程序中,對列表進行排序的需求是常見且至關重要的。在Python中,這一過程已被簡化和高效化。本篇文章深入探討了使用不同方法在Python中對列表進行排序的技巧。

使用 sort 方法對列表進行排序

不帶參數的 sort 方法

不帶參數的 sort 方法將列表原地按升序排序。這意味著原始列表將被改變,而不返回新的列表。這是對類似數據類型的列表進行快速有效排序的方式。

python
numbers = [4, 2, 9, 1, 5, 6]
numbers.sort() # 對數字進行排序
print(numbers) # 輸出排序後的結果
[1, 2, 4, 5, 6, 9]

使用 reverse 參數的 sort 方法

透過 reverse 參數與 sort 方法結合使用,列表可以按降序排序。這讓您能控制排序的方向,並直接作用於列表本身。

python
numbers = [4, 2, 9, 1, 5, 6]
numbers.sort(reverse=True) # 對數字進行降序排序
print(numbers) # 輸出排序後的結果
[9, 6, 5, 4, 2, 1]

使用 sorted 函數對列表進行排序

sorted 函數返回任何可迭代元素的新排序列表。

對字符串列表進行排序

sorted 函數允許對可迭代物件,如字符串列表進行排序。與 sort 方法不同,它返回一個新的排序列表,保留原始列表不變。這提供了在需要時保持原始順序的靈活性。

python
words = ["apple", "banana", "cherry"]
sorted_words = sorted(words) # 對單詞進行排序
print(sorted_words) # 輸出排序後的結果
['apple', 'banana', 'cherry']

對元組列表進行排序

對元組列表進行排序可能需要特殊處理,特別是當您想按元組內的特定元素進行排序時。結合 key 參數和 lambda 函數,您可以定義精確的排序行為。

python
tuples = [(1, 2), (3, 1), (5, 0), (4, 4)]
sorted_tuples = sorted(tuples, key=lambda x: x[1]) # 根據第二個元素對元組進行排序
print(sorted_tuples) # 輸出排序後的結果
[(5, 0), (3, 1), (1, 2), (4, 4)]

對字典列表進行排序

對字典列表進行排序需要指定應按其排序的鍵。以下是按與“age”鍵關聯的值對字典列表進行排序的示例:

python
people = [{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}, {"name": "Charlie", "age": 35}]
sorted_people = sorted(people, key=lambda x: x["age"]) # 使用'age'值作為鍵對人進行排序
print(sorted_people) # 輸出排序後的結果
[{'name': 'Bob', 'age': 25}, {'name': 'Alice', 'age': 30}, {'name': 'Charlie', 'age': 35}]

此代碼採用代表人員的字典列表並按年齡對其進行排序。通過使用 key 參數與 lambda 函數,您可以指定每個字典中的“age”值應用作排序鍵。


在Python中,可以使用 sort 方法和 sorted 函數來完成列表排序。無論您需要按升序還是降序排序,這些工具都提供了實現所需結果的簡單高效方式。


FAQs

  1. 我能否對混合數據類型的列表進行排序? 不可以,嘗試對包含混合數據類型的列表進行排序將導致TypeError。
  2. 我如何對字典列表進行排序? 您可以使用 key 參數與 lambda 函數,指定排序的鍵。

3

. sort 方法或 sorted 函數哪個更快? sort 方法可能略快,因為它在原地對列表進行排序,而 sorted 函數返回一個新列表。

  1. 我能否在不使用 reverse 參數的情況下反轉列表? 是的,您可以使用 [::-1] 切片在按升序排序列表後對其進行反轉。
  2. 如果我想按多個標準進行排序該怎麼辦? 您可以提供一個作為 key 參數的函數,該函數返回包含所有排序標準的元組。
© Copyright 2023 CLONE CODING