Python Sort List用法

8 min read Oct 14, 2024
Python Sort List用法

Python Sort List 用法

在 Python 中,排序列表是一個常見的需求。Python 提供了多種方法來排序列表,這篇文章將深入探討 sort() 方法和 sorted() 函數的用法。

sort() 方法

sort() 方法是一種 原地排序 的方法,也就是說,它會直接修改原始列表,而不會建立新的列表。

語法:

list.sort(key=None, reverse=False)

參數:

  • key: 一個函數,用來指定排序的依據。
  • reverse: 一個布林值,指定排序的方向。True 代表降序排序,False 代表升序排序(預設值)。

示例:

# 原始列表
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]

# 使用 `sort()` 方法升序排序
numbers.sort()
print(numbers)  # 输出: [1, 1, 2, 3, 4, 5, 5, 6, 9]

# 使用 `sort()` 方法降序排序
numbers.sort(reverse=True)
print(numbers)  # 输出: [9, 6, 5, 5, 4, 3, 2, 1, 1]

使用 key 參數排序複雜資料類型:

sort() 方法可以配合 key 參數,根據列表元素的特定屬性進行排序。例如,要根據字典列表中的 age 屬性進行排序:

people = [
    {'name': 'John', 'age': 30},
    {'name': 'Jane', 'age': 25},
    {'name': 'Peter', 'age': 35}
]

# 使用 `key` 參數根據 `age` 屬性排序
people.sort(key=lambda person: person['age'])
print(people)  # 输出: [{'name': 'Jane', 'age': 25}, {'name': 'John', 'age': 30}, {'name': 'Peter', 'age': 35}]

sorted() 函數

sorted() 函數是一種 非原地排序 的方法,它會建立一個新的已排序列表,而不會修改原始列表。

語法:

sorted(iterable, key=None, reverse=False)

參數:

  • iterable: 一個可迭代對象,例如列表、元組、字串。
  • key: 一個函數,用來指定排序的依據。
  • reverse: 一個布林值,指定排序的方向。True 代表降序排序,False 代表升序排序(預設值)。

示例:

# 原始列表
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]

# 使用 `sorted()` 函數升序排序
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 输出: [1, 1, 2, 3, 4, 5, 5, 6, 9]

# 使用 `sorted()` 函數降序排序
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers)  # 输出: [9, 6, 5, 5, 4, 3, 2, 1, 1]

使用 key 參數排序複雜資料類型:

sorted() 函數也可以配合 key 參數,根據可迭代對象的特定屬性進行排序。例如,要根據字典列表中的 age 屬性進行排序:

people = [
    {'name': 'John', 'age': 30},
    {'name': 'Jane', 'age': 25},
    {'name': 'Peter', 'age': 35}
]

# 使用 `key` 參數根據 `age` 屬性排序
sorted_people = sorted(people, key=lambda person: person['age'])
print(sorted_people)  # 输出: [{'name': 'Jane', 'age': 25}, {'name': 'John', 'age': 30}, {'name': 'Peter', 'age': 35}]

如何選擇 sort() 還是 sorted()

  • 如果你需要 直接修改原始列表,可以使用 sort() 方法。
  • 如果你需要 建立一個新的已排序列表,同時保留原始列表,可以使用 sorted() 函數。

總結

sort() 方法和 sorted() 函數都是 Python 中用於排序列表的強大工具。選擇哪一個方法取決於你的需求。 sort() 方法會直接修改原始列表,而 sorted() 函數則會建立一個新的已排序列表。這兩個方法都支援使用 key 參數根據特定屬性進行排序。