python sorted函數(shù)的小練習(xí)及解答
前兩天學(xué)習(xí)了一下socket編程,在向某大神請(qǐng)教問(wèn)題時(shí)被嫌棄了,有一種還沒(méi)學(xué)會(huì)走就想跑的感覺(jué)。大神說(shuō)我現(xiàn)在的水平應(yīng)該去做一些像是操作文件、序列號(hào)等的小練習(xí)來(lái)加深理解。下面是他給我出的小練習(xí):
1、datas = [['sherry',19,'female'],['flora',21,'female'],['june',15,'femal']],分別根據(jù)名字首字母和年齡進(jìn)行排序輸出;
2、按照給定的輸出方式進(jìn)行輸出比較結(jié)果,對(duì)Person類(lèi)進(jìn)行補(bǔ)充;
class_mates = {'sherry':[18,'male'],'june':[20,'female'],'flora':[19,'female'],'alina':[21,'male']} class Person(object): def __init__(self,name,age): self.name = name p1 = Person('sherry',20) p2 = Person('june',20) if p1<p2: print('p1:{} less than p2:{}'.format([p1.name,p1.age],[p2.name,p2.age])) else: print('p1:{} gte than p2:{}'.format([p1.name,p1.age],[p2.name,p2.age]))
就這么簡(jiǎn)單我竟做了一下午(打臉)
題目
def get_first(info): first_value = info[0][0] return first_value na = sorted(datas,key=get_first) print(na) def age_sort(info): return info[1] print(sorted(datas,key=age_sort))
答案
class_mates = {'sherry':[18,'male'],'june':[20,'female'],'flora':[19,'female'],'alina':[21,'male']} class Person(object): def __init__(self,name,age): self.name = name self.age = age def __lt__(self,others): if(self.age<others.age): return 1 elif(self.age==others.age): if(self.name[0]<others.name[0]): return 1 else: return 0 return 0 p1 = Person('sherry',20) p2 = Person('june',20) if p1<p2: print('p1:{} less than p2:{}'.format([p1.name,p1.age],[p2.name,p2.age])) else: print('p1:{} gte than p2:{}'.format([p1.name,p1.age],[p2.name,p2.age]))
查看python官方文檔,總結(jié)一下get到的知識(shí)。
1、sorted(iterable[, key][, reverse])
返回一個(gè)重新排序的list,有兩個(gè)可選的關(guān)鍵字參數(shù)(使用參數(shù)名而不是位置來(lái)指定參數(shù))。
key 定義了一個(gè)帶參數(shù)的函數(shù),提取list的某個(gè)元素作為這個(gè)函數(shù)的參數(shù),返回值作為你叫關(guān)鍵字,默認(rèn)值是None(直接比較list的元素)
reverse是一個(gè)布爾值。True表示將list里面的元素反向排序。
2、ln(a,b),當(dāng)使用a<b的我時(shí)候,會(huì)自動(dòng)調(diào)用__ln__(a,b)這個(gè)函數(shù),因此我們要在類(lèi)中重新定義__ln(a,b)__函數(shù),自己定義什么時(shí)候返回true什么時(shí)候返回false。每一種類(lèi)型都有自己的ln()函數(shù),所以在重新定義的時(shí)候里面也可以調(diào)用。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python任務(wù)自動(dòng)化工具tox使用教程
這篇文章主要介紹了Python任務(wù)自動(dòng)化工具tox使用教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03Python最好的日期處理庫(kù)pendulum的使用指南
關(guān)于日期處理,Python?提供了很多的庫(kù),比如標(biāo)準(zhǔn)庫(kù)?datetime、第三方庫(kù)?dateutil、arrow?等等。本文將為大家介紹一個(gè)小編最喜歡的庫(kù)?pendulum,用起來(lái)可以說(shuō)非常的方便,任何對(duì)日期的操作它都能滿(mǎn)足2022-07-07Python輸入的多種情況超詳細(xì)解讀(單行、多行及數(shù)組)
對(duì)于 Python 來(lái)說(shuō)有多種方式可以輸入數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Python輸入的多種情況超詳細(xì)解讀,分別是單行、多行及數(shù)組,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-03-03Python?copy()與deepcopy()方法之間有什么區(qū)別
這篇文章主要介紹了Python中的copy()和deepcopy(),下面詳細(xì)介紹該內(nèi)容并附上詳細(xì)代碼,需要的朋友可以參考一下文章的具體內(nèi)容,希望對(duì)你有所幫助2022-10-10Python字節(jié)碼與程序執(zhí)行過(guò)程詳解
這篇文章主要為大家介紹了Python字節(jié)碼與程序執(zhí)行過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python+OpenCV實(shí)現(xiàn)鼠標(biāo)畫(huà)瞄準(zhǔn)星的方法詳解
所謂瞄準(zhǔn)星指的是一個(gè)圓圈加一個(gè)圓圈內(nèi)的十字線(xiàn),就像玩射擊游戲狙擊槍開(kāi)鏡的樣子一樣。本文將利用Python+OpenCV實(shí)現(xiàn)鼠標(biāo)畫(huà)瞄準(zhǔn)星,感興趣的可以嘗試一下2022-08-08數(shù)據(jù)庫(kù)操作入門(mén)PyMongo?MongoDB基本用法
這篇文章主要為大家介紹了數(shù)據(jù)庫(kù)操作入門(mén)PyMongo MongoDB基本用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11