新聞中心
Python中的cmp()函數(shù)用于比較兩個(gè)對(duì)象的大小。

創(chuàng)新互聯(lián)是專(zhuān)業(yè)的平山網(wǎng)站建設(shè)公司,平山接單;提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行平山網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
cmp( x, y):比較2個(gè)對(duì)象,前者小于后者返回-1,相等則返回0,大于后者返回1.
Python的cmp比較函數(shù)比較原理
Python的cmp函數(shù)可以比較同類(lèi)型之間,或者不同數(shù)據(jù)類(lèi)型之間。然后根據(jù)Python的cmp比較函數(shù)的返回值來(lái)判定比較大小。
>>> list1, list2 = [123, 'xyz'], [456, 'abc'] >>> cmp(list1, list2) -1 >>> cmp(list2, list1) 1 >>> list3 = list2 + [789] >>> list3 [456, 'abc', 789] >>> cmp(list2, list3) -1
觀察上面cmp函數(shù)的幾個(gè)比較,可以總結(jié):
Python的cmp比較函數(shù) ,如果我們比較的是兩個(gè)同類(lèi)的對(duì)象,比較操作是非常直觀的。
數(shù)字和字符串的比較,直接比較它們的值。
對(duì)于序列類(lèi)型的比較,方式上有相似。Python在兩個(gè)對(duì)象基本不能比較的時(shí)候盡量做出公平的結(jié)果。比如當(dāng)兩個(gè)對(duì)象沒(méi)有關(guān)系時(shí),或者兩種類(lèi)型根本就沒(méi)有用于比較的函數(shù)時(shí),這時(shí) Python只能根據(jù)"邏輯"來(lái)做出結(jié)論。比較的算法邏輯:
1. 對(duì)兩個(gè)列表的元素進(jìn)行比較.
2. 如果比較的元素是同類(lèi)型的,則比較其值,返回結(jié)果.
3. 如果兩個(gè)元素不是同一種類(lèi)型,則檢查它們是否是數(shù)字.
a. 如果是數(shù)字,執(zhí)行必要的數(shù)字強(qiáng)制類(lèi)型轉(zhuǎn)換,然后比較.
b. 如果有一方的元素是數(shù)字,則另一方的元素"大"(數(shù)字是"最小的")
c. 否則,通過(guò)類(lèi)型名字的字母順序進(jìn)行比較.
4. 如果有一個(gè)列表首先到達(dá)末尾,則另一個(gè)長(zhǎng)一點(diǎn)的列表"大".
5. 如果我們用盡了兩個(gè)列表的元素而且所有元素都是相等的,那么結(jié)果就是個(gè)平局,就
是說(shuō)返回一個(gè) 0.
這就是Python的cmp函數(shù)比較原理了。
注意:
Python 3.X 的版本中已經(jīng)沒(méi)有 cmp 函數(shù),如果你需要實(shí)現(xiàn)比較功能,需要引入 operator 模塊,適合任何對(duì)象。
新聞名稱(chēng):創(chuàng)新互聯(lián)Python教程:Python的內(nèi)建比較函數(shù)cmp比較原理剖析
轉(zhuǎn)載源于:http://m.fisionsoft.com.cn/article/djjjsgd.html


咨詢(xún)
建站咨詢(xún)
