當前位置:首頁 » 編程語言 » python3cmp

python3cmp

發布時間: 2022-12-13 01:47:03

㈠ 關於python3沒有cmp,如何代替的問題

>>>sorted(['bob','Bob','about','Zoo','Credit'],key=str.lower)
['about','bob','Bob','Credit','Zoo']

忽略大小寫的比較,先轉小寫作為鍵值排序

㈡ 在Python 3 中的自定義排序怎麼辦

python3 sorted取消了對cmp的支持。
python3 幫助文檔:
sorted(iterable, key=None, reverse=False)

  • reverse是一個布爾值。如果設置為True,列表元素將被倒序排列,默認為False

  • key接受一個函數,這個函數只接受一個元素,默認為None

  • Key的作用原理

    Python2中的自定義布爾函數cmp=custom_cmp(x, y)由Python3中的key=custom_key(x)代替。

    在python3中,待比較元素x通過custom_key函數轉化為Python能比較的值custom_key(x),進而再基於返回值進行排序。

    例子1:

  • my_alphabet = ['a', 'b', 'c']def custom_key(word):

  • numbers = [] for letter in word:

  • numbers.append(my_alphabet.index(letter)) return numbers# python中的整數列表能夠比較大小# custom_key('cbaba')==[2, 1, 0, 1, 0]x=['cbaba', 'ababa', 'bbaa']

  • x.sort(key=custom_key)123456789101112

  • 例子2

  • students = [('john', 'A', 15), ('jane', 'B', 12), ('dave','B', 10)]

  • sorted(students,key=lambda x: x[2]) #按照年齡來排序12

  • 關於lambda表達式

    例子3

    默認sorted([True, False])==[False, True] (False=0 < True=1)

    一個字元串排序,排序規則:小寫<大寫<奇數<偶數

  • #元組內(e1, e2, e3)的優先順序排列為: e1 > e2 > e3sorted(s, key=lambda x: (x.isdigit(),x.isdigit() and int(x) % 2 == 0,x.isupper(),x)#input: 'asdf234GDSdsf23'#output: 'addffssDGS33224'12345

  • x.isdigit()的作用是把數字放在後邊(True),字母放在前面(False).

  • x.isdigit() and int(x) % 2 == 0的作用是保證數字中奇數在前(False),偶數在後(True)。

  • x.isupper()的作用是在前面基礎上,保證字母小寫(False)在前大寫在後(True).

  • 最後的x表示在前面基礎上,對所有類別數字或字母排序。

㈢ Python3.x運用cmp()函數進行高級排序報錯

numbers.sort這種用法是錯誤的,如果你想要排序,則用如下語句:
num_sort=sorted(numbers,key=None,reverse=False)
新的list
num_sort才是一個排序後的列表。然後,你自定義的cmp過程只能對比兩個數字,而能對比列表中的各個元素,python3解釋器不知道你要做什麼,所以才會出錯。

㈣ Python中字元和數字之間是怎麼比較大小的

任何兩個對象都可以比較
相同類型的對象(實例),如果是數字型(int/float/long/complex),則按照簡單的大小來比較;如果是非數字型,且類(型)中定義了__cmp__(含__gt__,__lt__等)則按照__cmp__來比較,否則按照地址(id)來比較
不同類型的對象(實例),如果其中一個比較對象是數字型(int/float/long/complex等),則數字型的對象<其它非數字型的對象;如果兩個都是非數字型的對象,則按照類型名的順序比較,如{} < "abc"(按照"dict" < "str"),而"abc" > [1,2], "abc" < (1,2)。
對於自定義的類(型)實例,如果繼承自基本類型,則按照基本類型的規則比較(1-3)。否則,old-style class < new-style class, new-style class之間按照類型名順序比較,old-style class之間按照地址進行比較
bool類型是int的子類,且True=1, False=0,比較時按照1-4來比較,如True > -1, True < 4.2, True < "abc"等
上面的回答是針對Python2.x,3.x的有較大的變化,如str和int比較時會拋出異常等。

回到題目,字元和數字的比較符合規則3,所以數字<字元。舉個例子,如100和'a'(ord('a')=97),有
100<'a'

㈤ Python3.x運用cmp()函數進行高級排序報錯

numbers.sort這種用法是錯誤的,如果你想要排序,則用如下語句:
num_sort=sorted(numbers,key=None,reverse=False)
新的list num_sort才是一個排序後的列表。然後,你自定義的cmp過程只能對比兩個數字,而能對比列表中的各個元素,python3解釋器不知道你要做什麼,所以才會出錯。

㈥ Python 比較兩個字典大小

學習 Python 時,遇到看到菜鳥教程里的 cmp() 方法,衍生出這篇文章。但是後來和朋友討論,感覺在實際應用中極少有用到比較字典大小的場景。不過能搞懂一個知識點,還是很開心的。

cmp(dict1, dict2) 比較兩個字典大小的方法:先比字典長度,若相等就比 key 值,若再相等就比 value。
但是這個方法已經被 Python 3 取消了。
請參考: Python2 用 cmp() 比較字典大小 , Python3 為什麼取消了 __cmp__ 方法

operator 模塊提供了一系列方法比較兩個字典大小,詳細方法及使用示例請參考: Python3 使用 operator 模塊比較字典大小 。

但是在寫法上我們要注意,最好用 String 內置的方法,這樣利於對空值的判斷:

結果如下:

㈦ 新手學習python3.2 有關cmp

The cmp() function should be treated as gone, and the __cmp__() special method is no longer supported. Use __lt__() for sorting, __eq__() with __hash__(), and other rich comparisons as needed. (If you really need the cmp() functionality, you could use the expression (a > b) - (a < b) as the equivalent for cmp(a, b).)

大意就是cmp()函數已經「離開」了,如果你真的需要cmp()函數,可以用表達式(a > b) - (a < b)代替cmp(a,b)。

㈧ python3 為什麼取消了sort方法中的cmp參數

使用functools.cmp_to_key 即可。
附通過的代碼:

class Solution:
# @param {integer[]} nums
# @return {string}
def largestNumber(self, nums):
from functools import cmp_to_key
key = cmp_to_key(lambda x,y: int(y+x)-int(x+y))
res = ''.join(sorted(map(str, nums), key=key)).lstrip('0')
return res or '0'

㈨ 如何把Python2的代碼轉換為Python3的代碼

可以利用Python內置工具2to3.py,幫你自動將Python2的代碼轉換為Python3的代碼的。這個腳本的位置位在Python安裝的根目錄\Python27\Tools\Scripts\2to3.py。
比如我手上有個Python 2.x的python腳本:D:\tmp\transform.py
可以通過打開命令提示符,定位至該要轉換的腳本目錄下,然後運行
2to3.py -w transform.py

如果上述不加-w參數,則默認只是把轉換過程所對應的diff內容列印輸出到當前窗口而已。加了-w,就是把改動內容,寫回到原先的文件了。

㈩ python編程中cmp()函數是什麼意思

cmp就是一個比較的方法,python3.x已經去掉了這個多餘的東西

熱點內容
Qt用ftp傳文件 發布:2025-01-22 19:23:28 瀏覽:731
校園卡密碼是什麼 發布:2025-01-22 19:14:43 瀏覽:658
內存大小的存儲 發布:2025-01-22 18:58:17 瀏覽:393
tampermonkey腳本 發布:2025-01-22 18:53:17 瀏覽:117
windows7共享文件夾 發布:2025-01-22 18:53:17 瀏覽:479
如何調節安卓手機的內存 發布:2025-01-22 18:49:30 瀏覽:639
佳能相機存儲卡怎麼取消 發布:2025-01-22 18:40:59 瀏覽:569
天貓寶貝上傳 發布:2025-01-22 18:35:09 瀏覽:545
ipad如何登錄金鏟鏟安卓賬號 發布:2025-01-22 18:32:09 瀏覽:320
加密溝通 發布:2025-01-22 18:31:22 瀏覽:556