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
參數根據特定屬性進行排序。