1 #按名字排序 2 l2= [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)] 3 def by_name(t): 4 return t[0] 5 l2=sorted(l2,key=by_name) 6 print(l2) 7 #再按成績從高到低排序 8 def by_score(t): 9 return 100-t[1] 10 l2=sorted(l2,key=by_score) 11 print(l2)
題目:用一組tuple表示學生名字和成績,用sorted()對上述列表分別按名字和成績高低排序。
知識點:
1、Python內置的sorted()函數可以對list進行排序,sorted()函數也是一個高階函數,它還可以接收一個key函數來實現自定義的排序,key指定的函數將作用於list的每一個元素上,並根據key函數返回的結果進行排序,這里我之前不理解的一點,key函數作用於每一個元素上,根據返回的結果來排序,但排序的對象仍然是原list,key函數相當於對每一個元素作了一次自定義的背景調查。
2、默認情況下,對字符串排序,是按照ASCII的大小比較的,由於'Z' < 'a',大寫字母Z會排在小寫字母a的前面。
3、要進行反向排序,不必改動key函數,可以傳入第三個參數reverse=True,默認是升序(reverse=False),降序排列用(reverse=True)
