亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

章節
問答
課簽
筆記
評論
占位
占位

Python自定義排序函數

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 可將課程添加到書簽

邀請您關注公眾號
關注后,及時獲悉本課程動態

舉報

0/150
提交
取消
全部 精華 我要發布
全部 我要發布
最熱 最新
只看我的

手記推薦

更多

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?