5函數式編程---高階函數sorted()

1.python內置的sorted()函數可以對list進行排序: sorted([1,7,5,-6,3])>>>[-6, 1, 3, 5, 7]

sorted()是一個高階函數,可以接收一個key函數,來實行自定義排序。例如按絕對值大小排序:

>>> sorted([1,7,5,-6,3],key = abs)
[1, 3, 5, -6, 7]

2.對英文字符串按字母順序進行排序:

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)
['about', 'bob', 'Credit', 'Zoo']


3.要進行反向排序,不必改動key函數,可以傳入參數reverse=True:

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower,reverse = True)
['Zoo', 'Credit', 'bob', 'about']

小結:

sorted是一個高階函數,用sorted()排序的關鍵在於實現一個映射函數。


例題:L = [('Bob', 75), ('Adam', 92), ('Wart', 66), ('Lisa', 88)]

對L進行按字母順序排序

def by_name(t):
return t[0]
L2 = sorted(L,key = by_name)
print(L2)--->>>[('Adam', 92), ('Bob', 75), ('Lisa', 88), ('Wart', 66)]



對L進行按數字大小排序

def by_num(t):
return t[1]
L3 = sorted(L,key = by_num)
print(L3)--->>>[('Wart', 66), ('Bob', 75), ('Lisa', 88), ('Adam', 92)]


小結:通過以上例子發現,sorted(L,key)中,key是依次作用於L中的元素,key函數指定了作用於L元素的方法。結合下面的圖片,可能會有更深的理解。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章