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

Python自定義sorted排序?qū)崿F(xiàn)方法詳解

 更新時間:2020年09月18日 15:38:19   作者:r1-12king  
這篇文章主要介紹了Python自定義sorted排序?qū)崿F(xiàn)方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

題目

輸入一個正整數(shù)數(shù)組,把數(shù)組里面的所有屬豬拼接起來成為一個數(shù)打印能拼接起來的所有數(shù)字中最大/最小的那個。

思考

直觀想法就是求出這個數(shù)組中所有數(shù)字的全排列,然后拼接起來,再比較大小即可,當然復雜度過高。

另一個想法,我們可以定義一個排序規(guī)則,如下:
  如果兩個數(shù)m,n能拼接成數(shù)字mn,nm,如果mn>nm,則m應該在n前面,反之亦然

根據(jù)這個排序規(guī)則,我們可以重新排列數(shù)組,將排列好的數(shù)組拼接起來輸出即可'為了方便比較,并且防止數(shù)據(jù)溢出(比如C語言),采用字符串的方式拼接。我們很容易可以寫出如下代碼:

def compare(strNum1, strNum2):
  newStrNum1 = strNum1 + strNum2
  newStrNum2 = strNum2 + strNum1
  if newStrNum2 > newStrNum1:
    return -1
  elif newStrNum2 == newStrNum1:
    return 0
  else:
    return 1

問題

排序規(guī)則定義好了,但是問題來了,一般的 sorted 排序函數(shù) 都有相應的 cmp函數(shù),用來定制化排序的比較方法。但是python3的sorted函數(shù)已經(jīng)刪去了cmp參數(shù),真不能跑去用python2吧

解決方案

由于python3中sorted函數(shù)除去compare函數(shù),無法自定義排序規(guī)則,所以使用內(nèi)置的函數(shù),將cmp函數(shù)轉(zhuǎn)化為key的值

Note:

functools.cmp_to_key() 將 cmp函數(shù) 轉(zhuǎn)化為 key。

cmp函數(shù)的返回值 必須為 [1,-1,0]

python

from functools import cmp_to_key

def compare(strNum1, strNum2):
	"""
	返回最小排列的定義,如果需要最大,將返回值的+1、-1調(diào)換即可
	"""
  newStrNum1 = strNum1 + strNum2
  newStrNum2 = strNum2 + strNum1
  if newStrNum2 > newStrNum1:
    return -1
  elif newStrNum2 == newStrNum1:
    return 0
  else:
    return 1

def print_min_nums(nums):
  if not nums:
    return 0

  arr = [str(i) for i in nums]
  newarr = sorted(arr,key=cmp_to_key(compare))
  return "".join(newarr)


if __name__ == '__main__':
  print(print_min_nums([3,32,321]))

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python集合set()使用的方法詳解

    Python集合set()使用的方法詳解

    這篇文章主要為大家詳細介紹了Python集合set()使用的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Python實例方法、類方法、靜態(tài)方法的區(qū)別與作用詳解

    Python實例方法、類方法、靜態(tài)方法的區(qū)別與作用詳解

    這篇文章主要介紹了Python實例方法、類方法、靜態(tài)方法的區(qū)別與作用,結(jié)合實例形式分析了Python面向?qū)ο蟪绦蛟O計中實例方法、類方法、靜態(tài)方法的概念、原理、用法及相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • python循環(huán)監(jiān)控遠程端口的方法

    python循環(huán)監(jiān)控遠程端口的方法

    這篇文章主要介紹了python循環(huán)監(jiān)控遠程端口的方法,涉及Python實現(xiàn)端口監(jiān)控的技巧,需要的朋友可以參考下
    2015-03-03
  • python中刪除某個元素的方法解析

    python中刪除某個元素的方法解析

    這篇文章主要介紹了python中刪除某個元素的方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • Python文件操作和異常處理的方法和技巧

    Python文件操作和異常處理的方法和技巧

    本文介紹了Python文件操作和異常處理的方法和技巧,包括讀寫文本文件、讀寫二進制文件、文件指針、異常類型和處理、try-except語句、異常處理程序等內(nèi)容,幫助讀者更好地掌握Python在文件操作和異常處理方面的應用
    2023-05-05
  • 微軟開源最強Python自動化神器Playwright(不用寫一行代碼)

    微軟開源最強Python自動化神器Playwright(不用寫一行代碼)

    這篇文章主要介紹了微軟開源最強Python自動化神器Playwright(不用寫一行代碼),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • python+mysql實現(xiàn)個人論文管理系統(tǒng)

    python+mysql實現(xiàn)個人論文管理系統(tǒng)

    這篇文章主要為大家詳細介紹了python+mysql實現(xiàn)個人論文管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • python繼續(xù)找對象詳解

    python繼續(xù)找對象詳解

    這篇文章主要為大家介紹了python繼續(xù)找對象的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 如何用python將文件夾內(nèi)多個excel表格合并成總表

    如何用python將文件夾內(nèi)多個excel表格合并成總表

    前幾天遇見這么一個問題,手上有很多張表格,這些表格中都只有一個sheet,需要把這些表匯總到一張表,下面這篇文章主要給大家介紹了關(guān)于如何用python將文件夾內(nèi)多個excel表格合并成總表的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • Tortoise-orm信號實現(xiàn)及使用場景源碼詳解

    Tortoise-orm信號實現(xiàn)及使用場景源碼詳解

    這篇文章主要為大家介紹了Tortoise-orm信號實現(xiàn)及使用場景源碼詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03

最新評論

长垣县| 建德市| 商城县| 怀宁县| 六盘水市| 巴林右旗| 镶黄旗| 泉州市| 衡阳县| 法库县| 三河市| 大厂| 晴隆县| 安塞县| 青冈县| 琼结县| 苏尼特右旗| 乌拉特前旗| 巴彦淖尔市| 库车县| 浦城县| 武功县| 任丘市| 木里| 开原市| 大港区| 南丹县| 陆丰市| 禄丰县| 奉节县| 大埔区| 庄河市| 长沙县| 格尔木市| 缙云县| 甘孜| 泸水县| 石屏县| 深水埗区| 澳门| 江都市|