Python 是一個強大的程式語言,提供了許多有用的功能,其中之一就是 `sorted()` 函數。這個函數可以對序列中的元素進行排序,並返回排序後的序列副本。本文將介紹 `sorted()` 函數的使用方法、最佳實踐及一些實作範例,幫助您熟悉這個功能。

## `sorted()` 函數的基本用法

`sorted()` 函數可以接受多種類型的可迭代對象,例如列表、元組和字典,並對其中的元素進行排序。以下是基本用法的示範:

“`python
# 對列表中的元素進行排序
list_a = [3, 5, 1, 4, 2] sorted_list_a = sorted(list_a)
print(sorted_list_a) # [1, 2, 3, 4, 5]

# 對元組中的元素進行排序
tuple_a = (3, 5, 1, 4, 2)
sorted_tuple_a = sorted(tuple_a)
print(sorted_tuple_a) # [1, 2, 3, 4, 5]

# 對字典中的鍵進行排序
dict_a = {‘a’: 3, ‘b’: 5, ‘c’: 1, ‘d’: 4, ‘e’: 2}
sorted_dict_a = sorted(dict_a)
print(sorted_dict_a) # [‘a’, ‘b’, ‘c’, ‘d’, ‘e’] “`

在上面的程式碼中,我們展示了如何使用 `sorted()` 函數對不同類型的序列進行排序。`sorted()` 函數會返回一個新的排序後的序列,原始序列不會被改變。

## 使用參數自定義排序

`sorted()` 函數還可以接受可選的參數,讓您自定義排序的方式。以下是一些常用的參數:

– `key`:用來指定排序依據的函數。
– `reverse`:布林值,若設為 `True`,則會返回降序排列。

以下是一些範例:

“`python
# 按照字母順序排序
list_b = [‘apple’, ‘banana’, ‘orange’] sorted_list_b = sorted(list_b, key=str.lower)
print(sorted_list_b) # [‘apple’, ‘banana’, ‘orange’]

# 按照數字大小排序(降序)
list_c = [3, 5, 1, 4, 2] sorted_list_c = sorted(list_c, reverse=True)
print(sorted_list_c) # [5, 4, 3, 2, 1] “`

## 錯誤排除技巧

在使用 `sorted()` 函數時,可能會遇到以下錯誤:

1. **TypeError**:如果可迭代對象中包含不同數據類型(例如整數和字符串),則會引發此錯誤。請確保排序的元素都是相同類型。

“`python
mixed_list = [3, ‘apple’, 2] try:
sorted(mixed_list)
except TypeError as e:
print(f”錯誤:{e}”) # TypeError: ‘<' not supported between instances of 'str' and 'int' ``` 2. **ValueError**:如果在使用自定義比較函數時,函數未正確返回值,也可能引發此錯誤。確保比較函數返回 -1, 0 或 1。 ## 延伸應用 `sorted()` 函數也可以用於更複雜的數據結構,例如對字典的值進行排序: ```python # 按照字典的值進行排序 dict_b = {'a': 3, 'b': 1, 'c': 2} sorted_by_value = sorted(dict_b.items(), key=lambda item: item[1]) print(sorted_by_value) # [('b', 1), ('c', 2), ('a', 3)] ``` 這樣可以根據值的大小對字典進行排序,返回一個包含鍵值對的列表。 對於想要深入了解 Python 排序的更多資訊,您可以參考這篇 [Python 排序教學](https://vocus.cc/article/64a0c9f4fd8978000194c6a0)。 ## 結論 總結來說,`sorted()` 函數是一個非常實用的工具,可以幫助您輕鬆地對序列中的元素進行排序。通過使用可選參數,您可以自定義排序方式,以滿足不同需求。 ### Q&A(常見問題解答) **Q1: `sorted()` 函數是否會改變原始序列?** A1: 不會,`sorted()` 函數會返回一個新的排序後的序列,原始序列將保持不變。 **Q2: 如何使用 `key` 參數進行自定義排序?** A2: 您可以使用 `key` 參數指定一個函數,該函數將用於提取排序依據。例如,`key=str.lower` 可用於忽略大小寫排序。 **Q3: `sorted()` 函數支持哪些數據類型?** A3: `sorted()` 函數支持多種可迭代對象,如列表、元組和字典等,但需要注意數據類型的一致性。 ---

Categorized in:

Tagged in: