日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

第8.23节 Python中使用sort/sorted排序与“富比较”方法的关系分析

發(fā)布時間:2025/3/21 python 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第8.23节 Python中使用sort/sorted排序与“富比较”方法的关系分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、 引言
《第8.21節(jié) Python中__lt__、gt__等 “富比較”(“rich comparison”)方法用途探究》和《第8.22節(jié) Python案例詳解:重寫 “富比較”方法控制比較邏輯》介紹了富比較方法及執(zhí)行比較操作與富比較的對應關系,本節(jié)將通過案例分析排序操作與富比較方法的對應關系。
二、 案例說明
復用上節(jié)定義的類Car(如果你沒看上節(jié)可以忽略這個背景,因為代碼是完整的),包括實例屬性和實例方法都保持不變,我們來(這4個方法的用途請見上一節(jié)《第8.21節(jié) Python中__lt、__gt__等 “富比較”(“rich comparison”)方法用途探究》,然后我們定義多個實例變量放到一個列表中來進行排序,看執(zhí)行效果。
為了分析,我們定義多個實例變量放到一個列表中,調用列表的排序方法sort來對列表進行排序,當然也可以調用sorted函數進行排序,二者大部分功能是一樣的,但略有區(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排序時執(zhí)行了四次__lt__方法調用,沒有執(zhí)行其他富比較方法,因此sort排序默認調用的富比較方法是__lt__方法;
  • sort排序時改變了cars中的元素順序,確保了列表中的元素是按__lt__方法指定的排序屬性price進行排序的;
  • 本節(jié)的__repr__方法實現代碼與上節(jié)有所不同,這個應該是__repr__方法快速實現的一種方案,且符合Python對__repr__方法的要求。
  • 本節(jié)參考資料:
    1、《第8.21節(jié) Python中__lt__、__gt__等 “富比較”(“rich comparison”)方法用途探究》;
    2、《第8.15節(jié) Python重寫自定義類的__repr__方法》

    老猿Python,跟老猿學Python!
    博客地址:https://blog.csdn.net/LaoYuanPython
    請大家多多支持,點贊、評論和加關注!謝謝!

    轉載于:https://www.cnblogs.com/LaoYuanPython/p/11166827.html

    總結

    以上是生活随笔為你收集整理的第8.23节 Python中使用sort/sorted排序与“富比较”方法的关系分析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。