Python 中的就地运算符与标准运算符
Python 中的就地运算符
就地运算是一种直接更改给定线性代数或向量或度量的内容而不进行复制的运算。现在,有助于执行此类运算的运算符称为就地运算符。
让我们通过一个简单的例子来理解它 -
a=9 a += 2 print(a)
输出
11
上面的 += 绑定输入运算符。这里首先,将 a 加 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("添加后结果:", end="") print(x)
结果
添加后结果:27
isub()
此函数用于分配当前值并减去它们。Isub() 函数执行 x-=y 运算。
x =operator.isub(9,18) print("减法后结果: ", end="") print(x)
结果
减法后结果: -9
imul()
此函数用于赋值当前值并将它们相乘。此运算符执行 x*=y 运算。
x =operator.imul(9,18) print("相乘后结果:", end="") print(x)
结果
相乘后结果:162
itruediv()
此函数用于分配当前值并将它们相除。此运算符执行 x/=y 运算。
x =operator.itruediv(9,18) print("除法后结果:", end="") print(x)
结果
除法后结果: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(" 连接后:", end="") print(str1)
结果
连接后:TutorialsPoint
ipow()
此函数相当于 x **=y。
x =operator.ipow(2,6) print("指数后结果:", end="") print(x)
结果
指数后结果:64
标准运算符
运算符是可以操纵操作数。
例如在表达式 9+18 = 27 中,这里 9 和 18 是操作数,而 + 称为运算符。
运算符类型
Python 语言支持以下类型的运算符 -
算术运算符:(例如:+、-、*、/、%、**、//)
比较运算符:(例如:“==”、“!=”、“<>”、“>”、“<”、“>=”, “<=”)
赋值运算符:(例如:“=”、“+=”、“-=”、“*=”、“/=”、“%=”、“**=”、“//=”)
逻辑运算符:(例如:“逻辑与”、“逻辑或”、“逻辑非”)
- 位运算符:(例如:“|”、“&”、“^”, “~”、“<<”、“>>”)
成员运算符:(例如:in、not in)
身份运算符:(例如:is、is not)
将运算符映射到函数
下表显示了抽象操作如何与 Python 语法中的运算符符号以及运算符模块中的函数相对应。
操作 | 语法 | 函数 |
---|---|---|
添加 | 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 不是 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,切片(i,j)) |
切片 | Seq[i:j] | Getitem(seq, 切片(I, j)) |
字符串格式化 | S % obj | Mod(s, obj) |
减法 | a-b | Sub(a,b) |
真值测试 | obj | 真实性(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) |