Python內置的 sorted()函數可對list進行排序:
>>> sorted([36, 5, 12, 9, 21]) [5, 9, 12, 21, 36]
可以看到,sorted()函數,默認是由小到大排序列表的元素。
>>> score = [('Alice', 72), ('Candy', 90), ('Bob', 62)] >>> sorted(score) [('Alice', 72), ('Bob', 62), ('Candy', 90)]
當list的每一個元素又是一個容器時,則會以第一個元素來排序,比如在score中,每個元素都是包含名字和成績的一個tuple,sorted()函數則按名字首字母進行了排序并返回。
對于上述排序成績的情況,默認是按照第一個名字進行排序的,有沒有辦法讓sorted()函數按照成績來進行排序呢?
如果需要按照成績高低進行排序,需要指定排序的字段是成績,sorted接受key參數,用來指定排序的字段,key的值是一個函數,接受待排序列表的元素作為參數,并返回對應需要排序的字段。因此,sorted()函數也是高階函數。
def k(item): return item[1] # ==> 按成績排序,成績是第二個字段 sorted(score, key=k)
得到結果:[('Bob', 62), ('Alice', 72), ('Candy', 90)] 。
如果需要倒序,指定reverse參數即可。
sorted(score, key=k, reverse=True)
得到結果:[('Candy', 90), ('Alice', 72), ('Bob', 62)] 。
對字符串排序時,有時候忽略大小寫排序更符合習慣。請利用sorted()高階函數,實現忽略大小寫排序的算法。
輸入:['bob', 'about', 'Zoo', 'Credit']
輸出:['about', 'bob', 'Credit', 'Zoo']
參考答案:
def k(item): return item.lower() sorted(['bob', 'about', 'Zoo', 'Credit'], key=k)
請驗證,完成請求
由于請求次數過多,請先驗證,完成再次請求
打開微信掃碼自動綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報