1. 程式人生 > >Python 3中實現cmp()函式的功能

Python 3中實現cmp()函式的功能

本文由荒原之夢原創,原文連結:http://zhaokaifeng.com/?p=1088

cmp() 函式是Python 2中的一個用於比較兩個列表, 數字或字串等的大小關係的函式, 在Python 3中已經無法使用這個函數了:

>>> a = [1, 2, 3] 
>>> b = [4, 5, 6] 
>>> cmp(a, b) Traceback (most recent call last): File "<pyshell#60>", line 1, in <module> cmp(a, b) NameError: name 'cmp' is not defined 
>>>

在Python 3中, 使用operator模組來實現同樣的功能. 無論是在互動模式還是在文字模式下, 要使用operator模組都需要先匯入該模組:

import operator

在互動式模式下可以這樣使用:

>>> a = [1, 2] 
>>> b = [1, 3] 
>>> import operator 
>>> operator.eq(a, b) 
False 
>>>

但是如果我們在文字模式下也這樣使用:

a = [1, 2] 
b = [1, 3] 
import operator 
operator.eq(a, b)

Run之後並沒有任何回顯:

=================== RESTART: C:/Users/Master/Desktop/1.py =================== 
>>>

如果要實現互動式模式下一樣的回顯, 需要使用print()函式輸出:

a = [1, 2] 
b = [1, 3] 
import operator 
print(operator.eq(a, b))

回顯如下:

=================== RESTART: C:/Users/Master/Desktop/1.py ===================
False
>>>

operator模組的功能如下:

函式 含義
operator.lt(a, b) a < b
operator.le(a, b) a <= b
operator.eq(a, b) a == b
operator.ne(a, b) a != b
operator.gt(a, b) a > b
operator.ge(a, b) a >= b

比較大小的規則是以ASCII碼錶為基準, 從兩個列表中的第一個字元開始進行比較, 返回值為布林型別.