生活随笔
收集整理的這篇文章主要介紹了
第8.23节 Python中使用sort/sorted排序与“富比较”方法的关系分析
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、 引言
《第8.21節(jié) Python中__lt__、gt__等 “富比較”(“rich comparison”)方法用途探究》和《第8.22節(jié) Python案例詳解:重寫 “富比較”方法控制比較邏輯》介紹了富比較方法及執(zhí)行比較操作與富比較的對(duì)應(yīng)關(guān)系,本節(jié)將通過案例分析排序操作與富比較方法的對(duì)應(yīng)關(guān)系。
二、 案例說明
復(fù)用上節(jié)定義的類Car(如果你沒看上節(jié)可以忽略這個(gè)背景,因?yàn)榇a是完整的),包括實(shí)例屬性和實(shí)例方法都保持不變,我們來(這4個(gè)方法的用途請(qǐng)見上一節(jié)《第8.21節(jié) Python中__lt、__gt__等 “富比較”(“rich comparison”)方法用途探究》,然后我們定義多個(gè)實(shí)例變量放到一個(gè)列表中來進(jìn)行排序,看執(zhí)行效果。
為了分析,我們定義多個(gè)實(shí)例變量放到一個(gè)列表中,調(diào)用列表的排序方法sort來對(duì)列表進(jìn)行排序,當(dāng)然也可以調(diào)用sorted函數(shù)進(jìn)行排序,二者大部分功能是一樣的,但略有區(qū)別,在此就不展開講了,老猿考慮開單章專門介紹。
三、 代碼
>>> class Car():def __init__(self,carname,oilcper100km, price):self.carname,self.oilcper100km,self.price = carname,oilcper100km, pricedef __lt__(self,other): print("execute __lt__")return self.price<other.pricedef __le__(self,other):print("execute __le__")return self.price>other.pricedef __gt__(self,other):print("execute __gt__")return self.oilcper100km>other.oilcper100kmdef __ge__(self,other):print("execute __ge__")return self.oilcper100km<other.oilcper100kmdef __repr__(self): #return f"('{self.carname}',{self.oilcper100km},{self.price})"return str(self.__dict__)>>> car1,car2,car3 = Car('愛麗舍',8,10),Car('凱美瑞',7,27),Car('科帕奇',12,23)
>>> cars=[car1,car2,car3]
>>> cars
[{'carname': '愛麗舍', 'oilcper100km': 8, 'price': 10}, {'carname': '凱美瑞', 'oilcper100km': 7, 'price': 27}, {'carname': '科帕奇', 'oilcper100km': 12, 'price': 23}]
>>> cars.sort()
execute __lt__
execute __lt__
execute __lt__
execute __lt__
>>> cars
[{'carname': '愛麗舍', 'oilcper100km': 8, 'price': 10}, {'carname': '科帕奇', 'oilcper100km': 12, 'price': 23}, {'carname': '凱美瑞', 'oilcper100km': 7, 'price': 27}]
>>>
四、 案例截屏
五、 案例分析
sort排序時(shí)執(zhí)行了四次__lt__方法調(diào)用,沒有執(zhí)行其他富比較方法,因此sort排序默認(rèn)調(diào)用的富比較方法是__lt__方法;sort排序時(shí)改變了cars中的元素順序,確保了列表中的元素是按__lt__方法指定的排序?qū)傩詐rice進(jìn)行排序的;本節(jié)的__repr__方法實(shí)現(xiàn)代碼與上節(jié)有所不同,這個(gè)應(yīng)該是__repr__方法快速實(shí)現(xiàn)的一種方案,且符合Python對(duì)__repr__方法的要求。本節(jié)參考資料:
1、《第8.21節(jié) Python中__lt__、__gt__等 “富比較”(“rich comparison”)方法用途探究》;
2、《第8.15節(jié) Python重寫自定義類的__repr__方法》
老猿Python,跟老猿學(xué)Python!
博客地址:https://blog.csdn.net/LaoYuanPython
請(qǐng)大家多多支持,點(diǎn)贊、評(píng)論和加關(guān)注!謝謝!
轉(zhuǎn)載于:https://www.cnblogs.com/LaoYuanPython/p/11166827.html
總結(jié)
以上是生活随笔為你收集整理的第8.23节 Python中使用sort/sorted排序与“富比较”方法的关系分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。