Python的內建比較函數cmp比較原理剖析

來源:互聯網
上載者:User
Python的cmp比較函數比較原理

cmp( x, y):比較2個對象,前者小於後者返回-1,相等則返回0,大於後者返回1.

Python的cmp比較函數比較原理

Python的cmp函數可以比較同類型之間,或者不同資料類型之間。然後根據Python的cmp比較函數的傳回值來判定比較大小。
>>> 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函數的幾個比較,可以總結:

Python的cmp比較函數 ,如果我們比較的是兩個同類的對象,比較操作是非常直觀的。

數字和字串的比較,直接比較它們的值。



對於序列類型的比較,方式上有相似。Python在兩個對象基本不能比較的時候盡量做出公平的結果。比如當兩個對象沒有關係時,或者兩種類型根本就沒有用於比較的函數時,這時 Python只能根據"邏輯"來做出結論。比較的演算法邏輯:

1. 對兩個列表的元素進行比較.

2. 如果比較的元素是同類型的,則比較其值,返回結果.

3. 如果兩個元素不是同一種類型,則檢查它們是否是數字.

a. 如果是數字,執行必要的數字強制類型轉換,然後比較.

b. 如果有一方的元素是數字,則另一方的元素"大"(數字是"最小的")

c. 否則,通過類型名字的字母順序進行比較.

4. 如果有一個列表首先到達末尾,則另一個長一點的列表"大".

5. 如果我們用盡了兩個列表的元素而且所有元素都是相等的,那麼結果就是個平局,就

是說返回一個 0.

這就是Python的cmp函數比較原理了
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.