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 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告