最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python3 sorted 如何實(shí)現(xiàn)自定義排序標(biāo)準(zhǔn)

 更新時(shí)間:2020年03月12日 10:56:42   作者:ke1th  
這篇文章主要介紹了python3 sorted 如何實(shí)現(xiàn)自定義排序標(biāo)準(zhǔn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

在 python2 中,如果想要自定義評(píng)價(jià)標(biāo)準(zhǔn)的話,可以這么做

def cmp(a, b):
 # 如果邏輯上認(rèn)為 a < b ,返回 -1
 # 如果邏輯上認(rèn)為 a > b , 返回 1
 # 如果邏輯上認(rèn)為 a == b, 返回 0 
 pass

a = [2,3,1,2]
a = sorted(a, cmp)

但是在 python3 中,cmp 這個(gè)參數(shù)已經(jīng)被移除了,那么在 python3 中應(yīng)該怎么實(shí)現(xiàn) python2 的 cmp 功能呢?

import functools
def cmp(a, b):
  if b < a:
    return -1
  if a < b:
    return 1
  return 0
a = [1, 2, 5, 4]
print(sorted(a, key=functools.cmp_to_key(cmp)))

上面這個(gè)方法實(shí)現(xiàn)了降序排列,因?yàn)?-1 代表我們邏輯上認(rèn)為 a<b ,而實(shí)際上 b<a 。

追溯 cmp_to_key 的源碼,發(fā)現(xiàn)是這樣的

def cmp_to_key(mycmp):
  """Convert a cmp= function into a key= function"""
  class K(object):
    __slots__ = ['obj']
    def __init__(self, obj):
      self.obj = obj
    def __lt__(self, other):
      return mycmp(self.obj, other.obj) < 0
    def __gt__(self, other):
      return mycmp(self.obj, other.obj) > 0
    def __eq__(self, other):
      return mycmp(self.obj, other.obj) == 0
    def __le__(self, other):
      return mycmp(self.obj, other.obj) <= 0
    def __ge__(self, other):
      return mycmp(self.obj, other.obj) >= 0
    __hash__ = None
  return K

返回的是一個(gè)類(lèi),在 sorted 內(nèi)部,類(lèi)接收一個(gè)參數(shù)構(gòu)造一個(gè)實(shí)例,然后實(shí)例通過(guò)重載的方法來(lái)進(jìn)行比較。

k1 = K(1)
k2 = K(2)

# 問(wèn)題,k1,k2 誰(shuí)是 self,誰(shuí)是 other
# k1 是 self, k2 是 other
print(k1 < k2)

補(bǔ)充知識(shí):Python sorted--key參數(shù)用法

sorted(iterable[, key][, reverse])

從 iterable 中的項(xiàng)目返回新的排序列表。

有兩個(gè)可選參數(shù),必須指定為關(guān)鍵字參數(shù)。

key 指定一個(gè)參數(shù)的函數(shù),用于從每個(gè)列表元素中提取比較鍵:key=str.lower。默認(rèn)值為 None (直接比較元素)。

reverse 是一個(gè)布爾值。如果設(shè)置為 True,那么列表元素將按照每個(gè)比較反轉(zhuǎn)進(jìn)行排序。

示例:創(chuàng)建由元組構(gòu)成的列表:a = [('b',3), ('a',2), ('d',4), ('c',1)]

按照第一個(gè)元素排序

sorted(a, key=lambda x:x[0])

>>> [('a',2),('b',3),('c',1),('d',4)]

按照第二個(gè)元素排序

sorted(a, key=lambda x:x[1])

>>> [('c',1),('a',2),('b',3),('d',4)]

key = lambda x:x[?] 是固定寫(xiě)法,x其實(shí)可以為任意值。

以上這篇python3 sorted 如何實(shí)現(xiàn)自定義排序標(biāo)準(zhǔn)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python深度學(xué)習(xí)借助多標(biāo)簽分類(lèi)器進(jìn)行對(duì)抗訓(xùn)練

    python深度學(xué)習(xí)借助多標(biāo)簽分類(lèi)器進(jìn)行對(duì)抗訓(xùn)練

    這篇文章主要為大家介紹了python深度學(xué)習(xí)中如何借助多標(biāo)簽分類(lèi)器進(jìn)行對(duì)抗訓(xùn)練,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-01-01
  • python matplotlib繪圖,修改坐標(biāo)軸刻度為文字的實(shí)例

    python matplotlib繪圖,修改坐標(biāo)軸刻度為文字的實(shí)例

    今天小編就為大家分享一篇python matplotlib繪圖,修改坐標(biāo)軸刻度為文字的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 關(guān)于Python參數(shù)解析器argparse的應(yīng)用場(chǎng)景

    關(guān)于Python參數(shù)解析器argparse的應(yīng)用場(chǎng)景

    這篇文章主要介紹了關(guān)于Python參數(shù)解析器argparse的應(yīng)用場(chǎng)景,argparse 模塊使編寫(xiě)用戶(hù)友好的命令行界面變得容易,程序定義了所需的參數(shù),而 argparse 將找出如何從 sys.argv 中解析這些參數(shù),需要的朋友可以參考下
    2023-08-08
  • Django migrate報(bào)錯(cuò)的解決方案

    Django migrate報(bào)錯(cuò)的解決方案

    在講解如何解決migrate報(bào)錯(cuò)原因前,我們先要了解migrate做了什么事情,本文就詳細(xì)的介紹migrate使用以及出現(xiàn)問(wèn)題的解決,感興趣的可以了解一下
    2021-05-05
  • django orm模糊查詢(xún)、正則匹配多個(gè)值方式

    django orm模糊查詢(xún)、正則匹配多個(gè)值方式

    這篇文章主要介紹了django orm模糊查詢(xún)、正則匹配多個(gè)值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python遞歸調(diào)用中的坑:打印有值, 返回卻None

    python遞歸調(diào)用中的坑:打印有值, 返回卻None

    這篇文章主要介紹了python遞歸調(diào)用中的坑:打印有值, 返回卻None,本文通過(guò)問(wèn)題分析給出解決方法,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Python代碼連接到 Chat GPT API的方法

    Python代碼連接到 Chat GPT API的方法

    Chat GPT 由于其獨(dú)特、近乎準(zhǔn)確且類(lèi)似人類(lèi)的響應(yīng),如今在互聯(lián)網(wǎng)上引起了過(guò)多的討論,本文討論如何通過(guò) Python 代碼連接到 Chat GPT API,感興趣的朋友一起看看吧
    2023-02-02
  • Python+OpenCV繪制多instance的Mask圖像

    Python+OpenCV繪制多instance的Mask圖像

    Mask圖像中,不同值表示不同的實(shí)例(instance)。本文將詳細(xì)為大家講講如何利用OpenCV繪制多instance的Mask圖像,感興趣的可以學(xué)習(xí)一下
    2022-06-06
  • PyQt5 designer 頁(yè)面點(diǎn)擊按鈕跳轉(zhuǎn)頁(yè)面實(shí)現(xiàn)

    PyQt5 designer 頁(yè)面點(diǎn)擊按鈕跳轉(zhuǎn)頁(yè)面實(shí)現(xiàn)

    本文主要介紹了PyQt5 designer 頁(yè)面點(diǎn)擊按鈕跳轉(zhuǎn)頁(yè)面實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • python批量修改ssh密碼的實(shí)現(xiàn)

    python批量修改ssh密碼的實(shí)現(xiàn)

    這篇文章主要介紹了python批量修改ssh密碼的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08

最新評(píng)論

衡阳县| 政和县| 镇江市| 巴中市| 大埔区| 古丈县| 武胜县| 都昌县| 乌拉特中旗| 洞口县| 鄂州市| 冷水江市| 越西县| 崇左市| 泰和县| 故城县| 叶城县| 正安县| 阜宁县| 乾安县| 习水县| 杭锦旗| 榕江县| 双辽市| 都江堰市| 克东县| 来宾市| 长武县| 胶州市| 南川市| 图片| 鹤岗市| 桑植县| 威信县| 丽江市| 龙井市| 呈贡县| 西和县| 永德县| 普宁市| 呼图壁县|