Python2.x 版本中,使用 cmp() 函數來比較兩個列表、數字或字符串等的大小關系。
Python 3.X 的版本中已經沒有 cmp() 函數,如果你需要實現比較功能,需要引入 operator 模塊,適合任何對象,包含的方法有:
operator.lt(a, b)
operator.le(a, b)
operator.eq(a, b)
operator.ne(a, b)
operator.ge(a, b)
operator.gt(a, b)
operator.__lt__(a, b)
operator.__le__(a, b)
operator.__eq__(a, b)
operator.__ne__(a, b)
operator.__ge__(a, b)
operator.__gt__(a, b)
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 相同。
# 導入 operator 模塊
import operator
# 數字
x = 10
y = 20
print("x:",x, ", y:",y)
print("operator.lt(x,y): ", operator.lt(x,y))
print("operator.gt(y,x): ", operator.gt(y,x))
print("operator.eq(x,x): ", operator.eq(x,x))
print("operator.ne(y,y): ", operator.ne(y,y))
print("operator.le(x,y): ", operator.le(x,y))
print("operator.ge(y,x): ", operator.ge(y,x))
print()
# 字符串
x = "Google"
y = "Runoob"
print("x:",x, ", y:",y)
print("operator.lt(x,y): ", operator.lt(x,y))
print("operator.gt(y,x): ", operator.gt(y,x))
print("operator.eq(x,x): ", operator.eq(x,x))
print("operator.ne(y,y): ", operator.ne(y,y))
print("operator.le(x,y): ", operator.le(x,y))
print("operator.ge(y,x): ", operator.ge(y,x))
print()
# 查看返回值
print("type((operator.lt(x,y)): ", type(operator.lt(x,y)))
以上代碼輸出結果為:
x: 10 , y: 20
operator.lt(x,y): True
operator.gt(y,x): True
operator.eq(x,x): True
operator.ne(y,y): False
operator.le(x,y): True
operator.ge(y,x): True
x: Google , y: Runoob
operator.lt(x,y): True
operator.gt(y,x): True
operator.eq(x,x): True
operator.ne(y,y): False
operator.le(x,y): True
operator.ge(y,x): True
比較兩個列表:
# 導入 operator 模塊
import operator
a = [1, 2]
b = [2, 3]
c = [2, 3]
print("operator.eq(a,b): ", operator.eq(a,b))
print("operator.eq(c,b): ", operator.eq(c,b))
以上代碼輸出結果為:
operator.eq(a,b): False
operator.eq(c,b): True
operator 模塊提供了一套與 Python 的內置運算符對應的高效率函數。例如,operator.add(x, y) 與表達式 x+y 相同。
函數包含的種類有:對象的比較運算、邏輯運算、數學運算以及序列運算。
對象比較函數適用於所有的對象,函數名根據它們對應的比較運算符命名。
許多函數名與特殊方法名相同,只是沒有雙下劃線。為了向後兼容性,也保留了許多包含雙下劃線的函數,為了表述清楚,建議使用沒有雙下劃線的函數。
# Python 實例
# add(), sub(), mul()
# 導入 operator 模塊
import operator
# 初始化變量
a = 4
b = 3
# 使用 add() 讓兩個值相加
print ("add() 運算結果 :",end="");
print (operator.add(a, b))
# 使用 sub() 讓兩個值相減
print ("sub() 運算結果 :",end="");
print (operator.sub(a, b))
# 使用 mul() 讓兩個值相乘
print ("mul() 運算結果 :",end="");
print (operator.mul(a, b))
以上代碼輸出結果為:
add() 運算結果 :7
sub() 運算結果 :1
mul() 運算結果 :12
運算
語法
函數
加法
a + b
add(a, b)
字符串拼接
seq1 + seq2
concat(seq1, seq2)
包含測試
obj in seq
contains(seq, obj)
除法
a / b
truediv(a, b)
除法
a // b
floordiv(a, b)
按位與
a & b
and_(a, b)
按位異或
a ^ b
xor(a, b)
按位取反
~ a
invert(a)
按位或
a | b
or_(a, b)
取冪
a ** b
pow(a, b)
標識
a is b
is_(a, b)
標識
a is not b
is_not(a, b)
索引賦值
obj[k] = v
setitem(obj, k, v)
索引刪除
del obj[k]
delitem(obj, k)
索引取值
obj[k]
getitem(obj, k)
左移
a << b
lshift(a, b)
取模
a % b
mod(a, b)
乘法
a * b
mul(a, b)
矩陣乘法
a @ b
matmul(a, b)
取反(算術)
- a
neg(a)
取反(邏輯)
not a
not_(a)
正數
+ a
pos(a)
右移
a >> b
rshift(a, b)
切片賦值
seq[i:j] = values
setitem(seq, slice(i, j), values)
切片刪除
del seq[i:j]
delitem(seq, slice(i, j))
切片取值
seq[i:j]
getitem(seq, slice(i, j))
字符串格式化
s % obj
mod(s, obj)
減法
a - b
sub(a, b)
真值測試
obj
truth(obj)
比較
a < b
lt(a, b)
比較
a <= b
le(a, b)
相等
a == b
eq(a, b)
不等
a != b
ne(a, b)
比較
a >= b
ge(a, b)
比較
a > b
gt(a, b)