當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python sorted()和sort()用法及代碼示例


排序是指根據元素上的比較運算符重新排列元素的給定序列。比較運算符用於確定相應數據結構中元素的新順序。

例如:下麵的字符列表按其ASCII值的升序排列。也就是說,ASCII值較小的字符將比ASCII值較高的字符優先放置。

python-sorting


在Python中,對任何序列進行排序非常容易,因為它提供了內置的排序方法。兩種這樣的方法是sorted()sort()。這兩種方法用於排序,但是它們各自的方式有很大不同。讓我們一一看一下。

sorted()

sorted()方法將給定序列按升序或降序排序,並始終返回已排序的列表。此方法不影響原始序列。

用法: sorted(iterable, key, reverse=False)

參數:
Iterable:序列(列表,元組,字符串)或集合(字典,集合,frozenset)或任何其他需要排序的迭代器。
Key(optional):用作鍵或排序比較基礎的函數。
Reverse(optional):如果設置為True,則可迭代項將以反向(降序)排序,默認情況下將其設置為False。

返回類型:返回排序列表。

範例1:

# Python program to demonstrate 
# sorted() 
  
  
L = [1, 2, 3, 4, 5] 
  
print("Sorted list:") 
print(sorted(L)) 
  
print("\nReverse sorted list:") 
print(sorted(L, reverse = True)) 
  
print("\nOriginal list after sorting:") 
print(L)

輸出:

Sorted list:
[1, 2, 3, 4, 5]

Reverse sorted list:
[5, 4, 3, 2, 1]

Original list after sorting:
[1, 2, 3, 4, 5]

範例2:排序不同的數據類型

# Python program to demonstrate 
# sorted() 
  
  
# List  
x = ['q', 'w', 'r', 'e', 't', 'y']  
print(sorted(x))  
    
# Tuple  
x = ('q', 'w', 'e', 'r', 't', 'y')  
print(sorted(x)) 
  
# String-sorted based on ASCII translations  
x = "python"
print(sorted(x))  
    
# Dictionary  
x = {'q':1, 'w':2, 'e':3, 'r':4, 't':5, 'y':6}  
print(sorted(x))  
    
# Set  
x = {'q', 'w', 'e', 'r', 't', 'y'}  
print(sorted(x))

輸出:

['e', 'q', 'r', 't', 'w', 'y']
['e', 'q', 'r', 't', 'w', 'y']
['h', 'n', 'o', 'p', 't', 'y']
['e', 'q', 'r', 't', 'w', 'y']
['e', 'q', 'r', 't', 'w', 'y']

使用關鍵參數

此可選參數鍵具有其函數的函數。此鍵函數在排序之前轉換每個元素,它獲取值並返回1個值,該值隨後在排序中使用,而不是原始值。


例:假設我們要根據字符串的長度對字符串列表進行排序。這可以通過傳遞len()作為鍵參數的值。下麵是實現。

# Python program to demonstrate 
# sorted() 
  
  
L = ['aaaa', 'bbb', 'cc', 'd'] 
  
# sorted without key parameter 
print(sorted(L)) 
print() 
  
# sorted with key parameter 
print(sorted(L, key = len))

輸出:

['aaaa', 'bbb', 'cc', 'd']

['d', 'cc', 'bbb', 'aaaa']

sort()

sort()函數與sorted()非常相似,但與排序不同,它不返回任何內容並對原始序列進行更改。此外,sort()是列表類的一種方法,隻能與列表一起使用。

用法: List_name.sort(key, reverse=False)

參數:
key:用作排序比較鍵的函數。
reverse:如果為true,則列表按降序排序。

返回類型:沒有

範例1:

# Python program to demonstrate 
# sort() 
  
  
# List of Integers  
numbers = [1, 3, 4, 2]  
    
# Sorting list of Integers  
numbers.sort()  
    
print(numbers)  
    
# List of Floating point numbers  
decimalnumber = [2.01, 2.00, 3.67, 3.28, 1.68]  
    
# Sorting list of Floating point numbers  
decimalnumber.sort()  
    
print(decimalnumber)  
    
# List of strings  
words = ["Geeks", "For", "Geeks"]  
    
# Sorting list of strings  
words.sort()  
    
print(words) 

輸出:

[1, 2, 3, 4]
[1.68, 2.0, 2.01, 3.28, 3.67]
['For', 'Geeks', 'Geeks']

範例2:反向排序。

# Python program to demonstrate 
# sort() 
  
  
# List of Integers  
numbers = [1, 3, 4, 2]  
    
# Sorting list of Integers  
numbers.sort(reverse = True)  
    
print(numbers)  
    
# List of Floating point numbers  
decimalnumber = [2.01, 2.00, 3.67, 3.28, 1.68]  
    
# Sorting list of Floating point numbers  
decimalnumber.sort(reverse = True)  
    
print(decimalnumber)  
    
# List of strings  
words = ["Geeks", "For", "Geeks"]  
    
# Sorting list of strings  
words.sort(reverse = True)  
    
print(words) 

輸出:

[4, 3, 2, 1]
[3.67, 3.28, 2.01, 2.0, 1.68]
['Geeks', 'Geeks', 'For']

範例3:使用關鍵參數。

# Python program to demonstrate sorting by user's  
# choice  
    
# function to return the second element of the  
# two elements passed as the parameter  
def sortSecond(val):  
    return val[1]   
    
# list1 to demonstrate the use of sorting   
# using using second key   
list1 = [(1, 2), (3, 3), (1, 1)]  
    
# sorts the array in ascending according to   
# second element  
list1.sort(key = sortSecond)   
print(list1)  
    
# sorts the array in descending according to  
# second element  
list1.sort(key = sortSecond, reverse = True)  
print(list1) 

輸出:

[(1, 1), (1, 2), (3, 3)]
[(3, 3), (1, 2), (1, 1)]


相關用法


注:本文由純淨天空篩選整理自nikhilaggarwal3大神的英文原創作品 Python – Difference between sorted() and sort()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。