當前位置:首頁 » 編程語言 » python排序cmp

python排序cmp

發布時間: 2025-01-13 07:09:04

python中如何比較兩個字元串大小

1、字元串大小比較操作符
在Python中,可以使用以下操作符來比較字元串的大小:
==:如果兩個字元串相等,則返回True
!=:如果兩個字元串相等,則返回True
>:如果一個字元串大於另一個字元串,則返回True
<=:如果一個字元串小於或等於另一個字元串,則返回True
>=:如果一個字元串大於或等於另一個字元串,則返回True
注意:字元串大小寫敏感。
2、字元串大小比較函數
Python中有許多函數可以用來比較字元串的大小。以下是其中一些:
①cmp():Python2.x版本中,可以使用cmp()函數比較字元串的大小。它將返回兩個字元串之間的大小差異。它接受兩個字元串作為參數,並具有以下語法:
cmp(str1,str2)
如果str1等於str2,則返回。如果str1小於str2,則返回負整數。如果str1大於str2,則返回正整數。但是,在Python3.x版本中,cmp()函數已經被刪除了。
②ord()
在Python中,ord()函數返回給定字元的Unicode代碼點的整數表示。這個整數是用於比較字元串中的字元。
例如:ord('a')將返回97,而ord('z')將返回122。
③strcmp()
如果想比較兩個字元串,並確定它們是否相等,可以使用strcmp()函數。這個函數將比較兩個字元串的字面值,如果它們相同,則返回0,否則返回一個非零值。在Python中,由於cmp()函數的刪除,使用strcmp()函數不再是必要的。
3、字元串排序
在對字元串進行排序時,不僅要考慮大小寫敏感問題,還要考慮如何對Unicode字元串進行排序。Python
2.x版本中,可以使用sort()和sorted()函數對字元串進行排序。此時,必須使用正確的Unicode碼點,否則可能會得到錯誤的排序結果。
例如,以下是一個對字元串列表進行排序使字元串按字母順序排列的示例:
#python2.x版本
strs=['apple','banana','Pineapple','Orange']
print(sorted(strs,key=str.lower))
#輸出
#['apple','banana','Orange','Pineapple']
在Python 3.x版本中,使用sort()和sorted()函數的方式略有不同。Python
3.x中的sort()和sorted()函數將默認使用Unicode來排序字元串。

㈡ 如何對列表進行排序 python

很多時候,我們需要對List進行排序,Python提供了兩個方法,對給定的List L進行排序:
方法1.用List的成員函數sort進行排序
方法2.用built-in函數sorted進行排序(從2.4開始)
這兩種方法使用起來差不多,以第一種為例進行講解:
從Python2.4開始,sort方法有了三個可選的參數,Python Library Reference里是這樣描述的

復制代碼代碼如下:

cmp:cmp specifies a custom comparison function of two arguments (iterable elements) which should return a negative, zero or positive number depending on whether the first argument is considered smaller than, equal to, or larger than the second argument:
"cmp=lambda x,y: cmp(x.lower(), y.lower())"
key:key specifies a function of one argument that is used to extract a comparison key from each list element: "key=str.lower"
reverse:reverse is a boolean value. If set to True, then the list elements are sorted as if each comparison were reversed.In general, the key and reverse conversion processes are much faster than specifying an
equivalent cmp function. This is because cmp is called multiple times for each list element while key and reverse touch each element only once.

以下是sort的具體實例。
實例1:

復制代碼代碼如下:

>>>L = [2,3,1,4]
>>>L.sort()
>>>L
>>>[1,2,3,4]

實例2:

復制代碼代碼如下:

>>>L = [2,3,1,4]
>>>L.sort(reverse=True)
>>>L
>>>[4,3,2,1]

實例3:

復制代碼代碼如下:

>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>L.sort(cmp=lambda x,y:cmp(x[1],y[1]))
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

實例4:

復制代碼代碼如下:

>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>L.sort(key=lambda x:x[1])
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

實例5:

復制代碼代碼如下:

>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>import operator
>>>L.sort(key=operator.itemgetter(1))
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

實例6:(DSU方法:Decorate-Sort-Undercorate)

復制代碼代碼如下:

>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>A = [(x[1],i,x) for i,x in enumerate(L)] #i can confirm the stable sort
>>>A.sort()
>>>L = [s[2] for s in A]
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

以上給出了6中對List排序的方法,其中實例3.4.5.6能起到對以List item中的某一項
為比較關鍵字進行排序.
效率比較:

復制代碼代碼如下:

cmp < DSU < key

通過實驗比較,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相當
多關鍵字比較排序:
實例7:

復制代碼代碼如下:

>>>L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=lambda x:x[1])
>>> L
>>>[('d', 2), ('c', 2), ('b', 3), ('a', 4)]

我們看到,此時排序過的L是僅僅按照第二個關鍵字來排的,如果我們想用第二個關鍵字
排過序後再用第一個關鍵字進行排序呢?有兩種方法
實例8:

復制代碼代碼如下:

>>> L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=lambda x:(x[1],x[0]))
>>> L
>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]

實例9:

復制代碼代碼如下:

>>> L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=operator.itemgetter(1,0))
>>> L
>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]

為什麼實例8能夠工作呢?原因在於tuple是的比較從左到右之一比較的,比較完第一個,如果
相等,比較第二個

㈢ python排序函數


python中自帶的排序函數有哪些呢?我們一起了解一下吧!
Python中自帶的兩個排序函數是sort和sorted,具體用法和特點如下。
sort函數
用法:list.sort(cmp=None,key=None,reverse=False)
特點:對list原地排序(直接改變數組),無返回值。
參數詳細釋義:
cmp——可選參數,可用於自定義排序規則。
key——主要是用來進行比較的元素,只有一個參數,具體的函數的參數就是取自於可迭代對象中,指定可迭代對象中的一個元素來進行排序。
reverse——升序or降序,reverse=True降序,reverse=False升序(默認)。
sorted函數
用法:sorted(iterable[,cmp[,key[,reverse]]])
特點:可以對所有可迭代的對象進行排序操作。返回的是一個新的list,不修改原來的對象。
參數詳細釋義:
iterable–可迭代對象。
cmp–比較的函數,這個具有兩個參數,參數的值都是從可迭代對象中取出,此函數必須遵守的規則為,大於則返回1,小於則返回-1,等於則返回0。
key–主要是用來進行比較的元素,只有一個參數,具體的函數的參數就是取自於可迭代對象中,指定可迭代對象中的一個元素來進行排序。
reverse–排序規則,reverse=True降序,reverse=False升序(默認)。
關於python中的排序函數,我們就了解到這啦!

熱點內容
索尼安卓11如何退回安卓10 發布:2025-01-13 10:24:09 瀏覽:127
程序編譯結構 發布:2025-01-13 10:24:08 瀏覽:90
創建郵箱地址伺服器連接錯誤 發布:2025-01-13 09:49:24 瀏覽:723
linux編輯文檔 發布:2025-01-13 09:47:51 瀏覽:435
二手製冷壓縮機 發布:2025-01-13 09:43:59 瀏覽:585
網魚電腦密碼多少 發布:2025-01-13 09:33:46 瀏覽:464
如何取消子賬號密碼 發布:2025-01-13 09:22:41 瀏覽:347
抖音搜索有緩存 發布:2025-01-13 09:17:28 瀏覽:590
c語言字元數組連接 發布:2025-01-13 08:55:11 瀏覽:901
國二c語言編程題目 發布:2025-01-13 08:45:41 瀏覽:285