Python - 列表排序



Python 中的列表排序

在 Python 中對列表進行排序是將列表的元素按照升序或降序排列的一種方法,排序依據可以是數字順序或字典順序等預定義標準。

這可以透過使用內建的 `sorted()` 函式或呼叫列表自身的 `sort()` 方法來實現,這兩種方法都會修改原始列表或返回一個新的已排序列表,具體取決於使用的方法。

使用 sort() 方法排序列表

Python 的 `sort() 方法` 用於就地排序列表的元素。這意味著它會修改原始列表,不會返回新的列表。

語法

使用 `sort()` 方法的語法如下:

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

其中:

  • list_name 是要排序的列表的名稱。
  • key (可選) 是一個定義排序標準的函式。如果提供,則將其應用於列表的每個元素以進行排序。預設為 None。
  • reverse (可選) 是一個布林值。如果為 True,則列表將按降序排序。如果為 False(預設值),則列表將按升序排序。

按字典順序排序列表的示例

在下面的示例中,我們使用 `sort()` 函式按字母數字順序對列表的項進行排序:

list1 = ['physics', 'Biology', 'chemistry', 'maths']
print ("list before sort:", list1)
list1.sort()
print ("list after sort : ", list1)

輸出結果如下:

list before sort: ['physics', 'Biology', 'chemistry', 'maths']
list after sort :  ['Biology', 'chemistry', 'maths', 'physics']

按數字順序排序列表的示例

在這裡,我們使用 `sort()` 函式按數字順序對給定的列表進行排序:

list2 = [10,16, 9, 24, 5]
print ("list before sort", list2)
list2.sort()
print ("list after sort : ", list2)

輸出結果如下:

list before sort [10, 16, 9, 24, 5]
list after sort :  [5, 9, 10, 16, 24]

使用 sorted() 方法排序列表

Python 中的 `sorted()` 函式是一個內建函式,用於對可迭代物件(例如列表、元組或字串)的元素進行排序,並返回一個新的已排序列表,而原始可迭代物件保持不變。

語法

使用 `sorted()` 方法的語法如下:

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

其中:

  • iterable 是要排序的元素的可迭代物件(例如,列表、元組、字串)。
  • key (可選) 是一個定義排序標準的函式。如果提供,則將其應用於可迭代物件的每個元素以進行排序。預設為 None。
  • reverse (可選) 是一個布林值。如果為 True,則迭代器將按降序排序;如果為 False(預設),則迭代器將按升序排序。

示例

在下面的示例中,我們使用 sorted() 函式對數字列表進行排序並檢索新的已排序列表:

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
# Sorting in descending order
sorted_numbers_desc = sorted(numbers, reverse=True)
print(sorted_numbers_desc) 

以上程式碼的輸出如下:

[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

使用回撥函式排序列表項

在 Python 中,回撥函式是指作為引數傳遞給另一個函式並在該函式內被呼叫或執行的函式。

我們可以使用 Python 中的 sorted() 函式或 sort() 函式透過回撥函式對列表項進行排序。這兩個函式都允許我們使用“key”引數指定自定義排序標準,該引數接受一個回撥函式。此回撥函式定義了元素的比較和排序方式。

使用 str.lower() 作為 key 引數的示例

Python 中的 str.lower() 方法用於將字串中的所有字元轉換為小寫。它返回一個新字串,其中所有字母字元都轉換為小寫,而非字母字元保持不變。

在這個例子中,我們將 str.lower() 方法作為引數傳遞給 sort() 函式中的“key”引數:

list1 = ['Physics', 'biology', 'Biomechanics', 'psychology']
print ("list before sort", list1)
list1.sort(key=str.lower)
print ("list after sort : ", list1)

它將產生以下輸出

list before sort ['Physics', 'biology', 'Biomechanics', 'psychology']
list after sort : ['biology', 'Biomechanics', 'Physics', 'psychology']

使用使用者定義函式作為 key 引數的示例

我們也可以使用使用者定義的函式作為 sort() 方法中的 key 引數。

在這個例子中,myfunction() 使用% 運算子返回餘數,排序基於此餘數進行:

def myfunction(x):
   return x%10
list1 = [17, 23, 46, 51, 90]
print ("list before sort", list1)
list1.sort(key=myfunction)
print ("list after sort : ", list1)

輸出結果如下:

list before sort [17, 23, 46, 51, 90]
list after sort: [90, 51, 23, 46, 17]
廣告