在本教程中,我們將借助示例了解 Python sort() 方法。
sort()
方法以特定的升序或降序對給定列表的元素進行排序。
示例
prime_numbers = [11, 3, 7, 5, 2]
# sort the list
prime_numbers.sort()
print(prime_numbers)
# Output: [2, 3, 5, 7, 11]
sort() 語法
用法:
list.sort(key=..., reverse=...)
或者,您也可以將 Python 的內置 sorted() 函數用於相同目的。
sorted(list, key=..., reverse=...)
注意:最簡單的區別sort()
和sorted()
是:sort()
直接更改列表並且不返回任何值,而sorted()
不更改列表並返回排序列表。
參數:
默認情況下,sort()
不需要任何額外的參數。但是,它有兩個可選參數:
- reverse- 如果
True
, 將排序後的列表反轉(或按降序排序) - key- 作為排序比較鍵的函數
返回:
sort()
方法不返回任何值。相反,它會更改原始列表。
如果您希望函數返回排序列表而不是更改原始列表,請使用 sorted()
。
示例 1:對給定列表進行排序
# vowels list
vowels = ['e', 'a', 'u', 'o', 'i']
# sort the vowels
vowels.sort()
# print vowels
print('Sorted list:', vowels)
輸出
Sorted list: ['a', 'e', 'i', 'o', 'u']
按降序排序
sort()
方法接受 reverse
參數作為可選參數。
設置 reverse = True
以降序對列表進行排序。
list.sort(reverse=True)
或者,對於 sorted()
,您可以使用以下代碼。
sorted(list, reverse=True)
示例 2:按降序對列表進行排序
# vowels list
vowels = ['e', 'a', 'u', 'o', 'i']
# sort the vowels
vowels.sort(reverse=True)
# print vowels
print('Sorted list (in Descending):', vowels)
輸出
Sorted list (in Descending): ['u', 'o', 'i', 'e', 'a']
使用鍵使用自定義函數排序
如果您想要自己的排序實現,sort()
方法也接受 key
函數作為可選參數。
根據 key 函數的結果,您可以對給定的列表進行排序。
list.sort(key=len)
或者排序:
sorted(list, key=len)
在這裏,len
是 Python 的內置函數,用於計算元素的長度。
該列表根據每個元素的長度進行排序,從最低計數到最高計數。
我們知道,默認情況下,元組使用其第一個參數進行排序。讓我們看看如何自定義sort()
方法以使用第二個元素進行排序。
示例 3:使用 key 對列表進行排序
# take second element for sort
def takeSecond(elem):
return elem[1]
# random list
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
# sort list with key
random.sort(key=takeSecond)
# print list
print('Sorted list:', random)
輸出
Sorted list: [(4, 1), (2, 2), (1, 3), (3, 4)]
讓我們再舉一個例子。假設我們有一個關於辦公室員工的信息列表,其中每個元素都是字典。
我們可以通過以下方式對列表進行排序:
# sorting using custom key
employees = [
{'Name': 'Alan Turing', 'age': 25, 'salary': 10000},
{'Name': 'Sharon Lin', 'age': 30, 'salary': 8000},
{'Name': 'John Hopkins', 'age': 18, 'salary': 1000},
{'Name': 'Mikhail Tal', 'age': 40, 'salary': 15000},
]
# custom functions to get employee info
def get_name(employee):
return employee.get('Name')
def get_age(employee):
return employee.get('age')
def get_salary(employee):
return employee.get('salary')
# sort by name (Ascending order)
employees.sort(key=get_name)
print(employees, end='\n\n')
# sort by Age (Ascending order)
employees.sort(key=get_age)
print(employees, end='\n\n')
# sort by salary (Descending order)
employees.sort(key=get_salary, reverse=True)
print(employees, end='\n\n')
輸出
[{'Name': 'Alan Turing', 'age': 25, 'salary': 10000}, {'Name': 'John Hopkins', 'age': 18, 'salary': 1000}, {'Name': 'Mikhail Tal', 'age': 40, 'salary': 15000}, {'Name': 'Sharon Lin', 'age': 30, 'salary': 8000}] [{'Name': 'John Hopkins', 'age': 18, 'salary': 1000}, {'Name': 'Alan Turing', 'age': 25, 'salary': 10000}, {'Name': 'Sharon Lin', 'age': 30, 'salary': 8000}, {'Name': 'Mikhail Tal', 'age': 40, 'salary': 15000}] [{'Name': 'Mikhail Tal', 'age': 40, 'salary': 15000}, {'Name': 'Alan Turing', 'age': 25, 'salary': 10000}, {'Name': 'Sharon Lin', 'age': 30, 'salary': 8000}, {'Name': 'John Hopkins', 'age': 18, 'salary': 1000}]
在這裏,對於第一種情況,我們的自定義函數返回每個員工的姓名。由於名稱是 string
,Python 默認使用字母順序對其進行排序。
對於第二種情況,年齡 (int
) 返回並按升序排序。
對於第三種情況,該函數返回薪水 (int
),並使用 reverse = True
按降序排序。
當函數可以在一行中總結時,使用 lambda 函數是一種很好的做法。所以,我們也可以把上麵的程序寫成:
# sorting using custom key
employees = [
{'Name': 'Alan Turing', 'age': 25, 'salary': 10000},
{'Name': 'Sharon Lin', 'age': 30, 'salary': 8000},
{'Name': 'John Hopkins', 'age': 18, 'salary': 1000},
{'Name': 'Mikhail Tal', 'age': 40, 'salary': 15000},
]
# sort by name (Ascending order)
employees.sort(key=lambda x: x.get('Name'))
print(employees, end='\n\n')
# sort by Age (Ascending order)
employees.sort(key=lambda x: x.get('age'))
print(employees, end='\n\n')
# sort by salary (Descending order)
employees.sort(key=lambda x: x.get('salary'), reverse=True)
print(employees, end='\n\n')
輸出
[{'Name': 'Alan Turing', 'age': 25, 'salary': 10000}, {'Name': 'John Hopkins', 'age': 18, 'salary': 1000}, {'Name': 'Mikhail Tal', 'age': 40, 'salary': 15000}, {'Name': 'Sharon Lin', 'age': 30, 'salary': 8000}] [{'Name': 'John Hopkins', 'age': 18, 'salary': 1000}, {'Name': 'Alan Turing', 'age': 25, 'salary': 10000}, {'Name': 'Sharon Lin', 'age': 30, 'salary': 8000}, {'Name': 'Mikhail Tal', 'age': 40, 'salary': 15000}] [{'Name': 'Mikhail Tal', 'age': 40, 'salary': 15000}, {'Name': 'Alan Turing', 'age': 25, 'salary': 10000}, {'Name': 'Sharon Lin', 'age': 30, 'salary': 8000}, {'Name': 'John Hopkins', 'age': 18, 'salary': 1000}]
要了解有關 lambda 函數的更多信息,請訪問 Python Lambda Functions。
相關用法
- Python List remove()用法及代碼示例
- Python List insert()用法及代碼示例
- Python List clear()用法及代碼示例
- Python List reverse()用法及代碼示例
- Python List append()用法及代碼示例
- Python List cmp()用法及代碼示例
- Python List pop()用法及代碼示例
- Python List index()用法及代碼示例
- Python List list()用法及代碼示例
- Python List max()用法及代碼示例
- Python List count()用法及代碼示例
- Python List len()用法及代碼示例
- Python List min()用法及代碼示例
- Python List copy()用法及代碼示例
- Python List extend()用法及代碼示例
- Python Lock acquire()用法及代碼示例
- Python Lock release()用法及代碼示例
- Python Lock locked()用法及代碼示例
- Python torch.distributed.rpc.rpc_async用法及代碼示例
- Python torch.nn.InstanceNorm3d用法及代碼示例
注:本文由純淨天空篩選整理自 Python List sort()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。