【Python 列表排序完整指南】深入解析 sort() 方法與 sorted() 函式的用法與差異

1. 什麼是 Python 中的列表排序?

為什麼列表排序很重要?

列表排序是資料管理與分析中非常基本且重要的操作。透過排序,可以提高資料的可讀性,並大幅提升搜尋與比較的效率。例如,在使用 Python 進行資料處理時,透過對數字或字串進行排序,可以讓複雜的資料更易於管理與分析。

在 Python 中,可以使用 sort() 方法與 sorted() 函式來進行列表排序。正確使用這些功能可以讓資料處理更加高效。

侍エンジニア塾

2. 使用 sort() 方法進行列表排序

2.1 sort() 方法的基本用法

sort() 方法會直接修改原始列表,而不會回傳新的列表。因此,它不會佔用額外的記憶體,這是一個顯著的優勢。以下範例展示如何進行升序排序:

numbers = [5, 2, 9, 1, 5, 6]
numbers.sort()
print(numbers)  # [1, 2, 5, 5, 6, 9]

2.2 如何進行降序排序

如果希望列表按照降序排列,可以使用 reverse=True 參數。

numbers = [5, 2, 9, 1, 5, 6]
numbers.sort(reverse=True)
print(numbers)  # [9, 6, 5, 5, 2, 1]

2.3 記憶體效率與適用情境

sort() 方法適用於需要節省記憶體的場景,因為它會直接修改原始列表,而不會建立新的列表。在處理大量資料時,這能有效減少記憶體使用量。

3. 使用 sorted() 函式進行列表排序

3.1 sorted() 函式的基本用法

sorted() 函式不會改變原始列表,而是回傳一個新的排序後的列表。當需要保留原始列表並生成新的排序後的列表時,這是一個理想的選擇。以下範例展示如何使用 sorted() 進行升序排序:

numbers = [5, 2, 9, 1, 5, 6]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # [1, 2, 5, 5, 6, 9]
print(numbers)  # [5, 2, 9, 1, 5, 6]  # 原始列表未變更

3.2 與 sort() 方法的差異

sorted() 函式與 sort() 方法的最大不同點在於:sorted() 會回傳新的排序後的列表,而 sort() 會直接修改原始列表。如果需要保留原始列表並產生不同排序結果的版本,使用 sorted() 會更合適。

侍エンジニア塾

4. 使用 key 參數進行條件排序

4.1 根據自訂條件排序

sort()sorted() 都支援 key 參數,讓使用者能夠依據特定條件進行排序。例如,可以根據字串的長度對列表排序:

words = ['apple', 'banana', 'cherry', 'date']
words.sort(key=len)
print(words)  # ['date', 'apple', 'banana', 'cherry']

4.2 忽略大小寫進行排序

如果要在排序時忽略大小寫,可以使用 key=str.lower 來確保排序結果不受大小寫影響。

words = ['Apple', 'banana', 'Cherry', 'date']
sorted_words = sorted(words, key=str.lower)
print(sorted_words)  # ['Apple', 'banana', 'Cherry', 'date']

4.3 使用 Lambda 函式進行進階排序

透過 Lambda 函式,可以進行更進階的條件排序。例如,根據元組的第二個元素進行排序:

pairs = [(1, 3), (2, 1), (3, 2)]
sorted_pairs = sorted(pairs, key=lambda pair: pair[1])
print(sorted_pairs)  # [(2, 1), (3, 2), (1, 3)]

 

年収訴求

5. sort()sorted() 的效能差異

5.1 效能比較

sort()sorted() 皆使用 Timsort 演算法,通常執行速度相當快。然而,sort() 會直接修改原始列表,因此記憶體使用量較少,特別適合處理大規模數據。而 sorted() 則會建立新的排序後列表,會額外佔用記憶體,但在需要保留原始數據時會更有優勢。

5.2 如何選擇適合的方法?

當需要處理大量數據並希望降低記憶體消耗時,建議使用 sort() 方法,因為它直接修改原始列表,不會佔用額外記憶體。反之,當需要保留原始列表並產生不同排序結果時,則適合使用 sorted() 函式。

6. FAQ

6.1 sort()sorted() 的主要差異是什麼?

sort() 方法會直接修改原始列表,並回傳 None,不會建立新的列表。而 sorted() 函式會回傳一個新的排序後列表,原始列表不會改變。

6.2 如何在 Python 中進行更複雜的條件排序?

可以使用 key 參數,並搭配 Lambda 函式或自訂函式來進行更進階的排序。例如,可以根據字串長度、字母順序或數字大小進行排序。

6.3 reverse() 方法和 sort(reverse=True) 有什麼不同?

reverse() 方法僅會反轉列表的順序,但不會進行排序。而 sort(reverse=True) 則會將列表按照降序進行排序。

広告
年収訴求