[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 方法

通过 sort 方法结合 reverse 参数,可以使列表降序排列。这使您能够控制排序方向,并直接在列表本身上使用。

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"])
print(sorted_people)
[{'name': 'Bob', 'age': 25}, {'name': 'Alice', 'age': 30}, {'name': 'Charlie', 'age': 35}]

此代码获取代表人员的字典列表并按年龄排序。通过与lambda函数结合的 key 参数,您可以指定应将每个字典中的 "age" 值用作排序键。


无论您需要按升序还是降序排序,都可以使用 sort 方法和 sorted 函数来完成Python列表的排序。这些工具提供了实现所需结果的简单和高效方法。


FAQs

  1. 我應該使用 sort 方法還是 sorted 函數? sort 方法改變原始清單,而 sorted 函數則回傳一個新的排序清單。若欲保留原始清單不變,則使用 sorted;若欲直接修改原始清單,則使用 sort
  2. 我該如何根據元組內的特定元素對元組的清單進行排序? 您可以結合 key 參數和 lambda 函數,依元組內特定元素進行排序。例如,sorted(tuples, key=lambda x: x[1]) 將根據第二個元素對元組進行排序。
  3. 如果清單包含混合的數據類型,我該怎麼辦? sort 方法和 sorted 函數只適用於相同數據類型的元素清單。若清單中有混合的數據類型,您可能需要按照特定類型進行排序,或撰寫自訂的排序函數。
  4. 我該如何使清單降序排列? 若要降序排列,您可以在使用 sort 方法或 sorted 函數時加上 reverse=True 參數。例如,numbers.sort(reverse=True) 將使數字降序排列。
  5. 我該如何根據特定鍵對字典的清單進行排序? 在對字典清單進行排序時,您可以使用 key 參數來指定排序的鍵。例如,程式碼 sorted(people, key=lambda x: x["age"]) 將根據 "age" 鍵關聯的值對字典清單進行排序。
© Copyright 2023 CLONE CODING