欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python3 sorted 如何實現(xiàn)自定義排序標準

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

在 python2 中,如果想要自定義評價標準的話,可以這么做

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

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

但是在 python3 中,cmp 這個參數(shù)已經(jīng)被移除了,那么在 python3 中應該怎么實現(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)))

上面這個方法實現(xiàn)了降序排列,因為 -1 代表我們邏輯上認為 a<b ,而實際上 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

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

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

# 問題,k1,k2 誰是 self,誰是 other
# k1 是 self, k2 是 other
print(k1 < k2)

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

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

從 iterable 中的項目返回新的排序列表。

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

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

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

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

按照第一個元素排序

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

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

按照第二個元素排序

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

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

key = lambda x:x[?] 是固定寫法,x其實可以為任意值。

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

相關文章

  • python基礎中的文件對象詳解

    python基礎中的文件對象詳解

    這篇文章主要為大家介紹了python基礎中的文件對象,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 使用Python實現(xiàn)廣告點擊率預測

    使用Python實現(xiàn)廣告點擊率預測

    廣告點擊率是指有多少用戶點擊了您的廣告與有多少用戶查看了您的廣告的比率,本文主要為大家介紹了如何使用Python實現(xiàn)廣告點擊率預測,感興趣的小伙伴可以了解下
    2023-10-10
  • 解決Jupyter notebook更換主題工具欄被隱藏及添加目錄生成插件問題

    解決Jupyter notebook更換主題工具欄被隱藏及添加目錄生成插件問題

    這篇文章主要介紹了解決Jupyter notebook更換主題工具欄被隱藏及添加目錄生成插件問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python快速入門題目詳解

    python快速入門題目詳解

    下面小編就為大家?guī)硪黄焖偃腴Tpython的題目詳解小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-11-11
  • Python調(diào)用百度AI實現(xiàn)顏值評分功能

    Python調(diào)用百度AI實現(xiàn)顏值評分功能

    這篇文章主要介紹了應用百度AI的人臉識別功能對年齡、性別、顏值等進行識別,代碼具有一定的學習價值,感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • 深入淺析Python代碼規(guī)范性檢測

    深入淺析Python代碼規(guī)范性檢測

    這篇文章主要介紹了Python代碼規(guī)范性檢測,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • TensorFlow實現(xiàn)批量歸一化操作的示例

    TensorFlow實現(xiàn)批量歸一化操作的示例

    這篇文章主要介紹了TensorFlow實現(xiàn)批量歸一化操作的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • 用Python制作簡單的鋼琴程序的教程

    用Python制作簡單的鋼琴程序的教程

    這篇文章主要介紹了用Python制作簡單的鋼琴程序的教程,用鍵盤演奏、包括變速和變調(diào)等功能的實現(xiàn),需要的朋友可以參考下
    2015-04-04
  • Python保留數(shù)據(jù)并刪除Excel單元格的函數(shù)和公式

    Python保留數(shù)據(jù)并刪除Excel單元格的函數(shù)和公式

    在分析處理Excel表格時,我們可能需要使用各種公式或函數(shù)對表格數(shù)據(jù)進行計算,從而分析出更多的信息,但在展示、分享或再利用分析結(jié)果時,我們可能需要將含有公式的單元格轉(zhuǎn)換為靜態(tài)數(shù)值,本文將介紹如何使用Python代碼批量移除Excel單元格中的公式并保留數(shù)值
    2024-10-10
  • linux系統(tǒng)使用python監(jiān)控apache服務器進程腳本分享

    linux系統(tǒng)使用python監(jiān)控apache服務器進程腳本分享

    這篇文章主要介紹了linux系統(tǒng)使用python監(jiān)控apache服務器進程的腳本,大家參考使用吧
    2014-01-01

最新評論