Python中的就地運算子與標準運算子


Python中的就地運算子

就地操作是指直接更改給定線性代數、向量或矩陣的內容,而無需建立副本。現在,有助於執行此類操作的運算子稱為就地運算子。

讓我們用一個簡單的例子來理解它:

a=9
a += 2
print(a)

輸出

11

以上是`+=`就地運算子。首先,將2加到a的值,然後更新為之前的值。

上述原則也適用於其他運算子。常見的就地運算子包括:

  • +=
  • -=
  • *=
  • /=
  • %=

上述原則也適用於數字以外的其他型別,例如:

language = "Python"
language +="3"
print(language)

輸出

Python3

以上`x+=y`的例子等價於`x = operator.iadd(x,y)`

有多個運算子用於就地操作。

iadd()

此函式用於賦值當前值並將其相加。此運算子執行`x+=y`操作。

x =operator.iadd(9,18)
print("Result after adding: ", end="")
print(x)

結果

Result after adding: 27

isub()

此函式用於賦值當前值並將其相減。isub()函式執行`x-=y`操作。

x =operator.isub(9,18)
print("Result after subtraction: ", end="")
print(x)

結果

Result after subtraction: -9

imul()

此函式用於賦值當前值並將其相乘。此運算子執行`x*=y`操作。

x =operator.imul(9,18)
print("Result after multiplying: ", end="")
print(x)

結果

Result after multiplying: 162

itruediv()

此函式用於賦值當前值並將其相除。此運算子執行`x/=y`操作。

x =operator.itruediv(9,18)
print("Result after dividing: ", end="")
print(x)

結果

Result after dividing: 0.5

imod()

此函式用於賦值當前值並將其取模。此運算子執行`x %=y`操作。

x =operator.imod(9,18)
print("Result after moduls: ", end="")
print(x)

結果

Result after moduls: 9

iconcat()

此函式用於連線兩個字串。

x = "Tutorials"
y = "Point"

str1 = operator.iconcat(x,y)
print(" After concatenation : ", end="")
print(str1)

結果

After concatenation : TutorialsPoint

ipow()

此函式等價於`x **=y`。

x =operator.ipow(2,6)
print("Result after exponent: ", end="")
print(x)

結果

Result after exponent: 64

標準運算子

運算子是可以操作運算元值的構造。

例如,在表示式9+18 = 27中,9和18是運算元,+稱為運算子。

運算子型別

Python語言支援以下型別的運算子:

  • **算術運算子**:(例如:+,-,*,/,%,**,//)

  • **比較運算子**:(例如:“==”,“!=”,“<>”,“>”,“<”,“> =”,“<=”)

  • **賦值運算子**:(例如:“=”,“+=”,“-=”,“*=”,“/=”,“%=”,“**=”,“//=”)

  • **邏輯運算子**:(例如:“邏輯與”,“邏輯或”,“邏輯非”)

  • **位運算子:**(例如:“|”,“&”,“^”,“~”,“<<”,“>>”)
  • **成員運算子**:(例如:in,not in)

  • **身份運算子**:(例如:is,is not)

運算子與函式的對映

下表顯示了抽象操作如何對應於Python語法中的運算子符號和operator模組中的函式。

操作
語法
函式
加法
x + y
add(x, y)
連線
Seq1 + seq2
concat(seq1, seq2)
包含測試
Obj in seq
contains(seq, obj)
除法
x / y
truediv(x, y)
除法
x // y
floordiv(x, y)
按位與
x & y
and_(x, y)
按位異或
x ^ y
xor(x, y)
按位取反
~x
invert(x)
按位或
x|y
or_(x,y)
指數
x ** y
pow(x, y)
身份
x is y
is_(x, y)
身份
x is not y
is_not(x, y)
索引賦值
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)
乘法
x*y
mul(x*y)
矩陣乘法
x@b
matmul(x, y)
否定(算術)
-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)

更新於:2019年7月30日

369 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.