Python机器学习编程与实战
上QQ阅读APP看书,第一时间看更新

1.2.2 运算符

运算符是运算法则的具体体现,Python提供了算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、身份运算符和成员运算符等7类运算符,可以实现丰富多样的运算功能。

1.算术运算符

Python中的算术运算符如表1-5所示。

表1-5 Python中的算术运算符

算术运算结果的数字类型和运算数的类型有关。进行除法(/)运算时,不管商为整数还是浮点数,运算结果始终为浮点数。要得到整型的商,需要用双斜杠(//)做整除,且除数必须是整型的。对于其他运算,只要任一运算数为浮点数,运算结果就是浮点数。

2.赋值运算符

Python的赋值运算符除基础赋值运算符(=)外,还包括加法赋值运算符(+)、减法赋值运算符(−)等。严格地说,除基础赋值运算符外,其他的属于特殊的赋值运算符。Python中的赋值运算符如表1-6所示。

表1-6 Python中的赋值运算符

表1-6中的特殊赋值运算符可以看作变量的快速更新,更新意味着该变量是存在的,对于一个之前不存在的变量,不能使用特殊赋值运算符。

3.比较运算符

Python中的比较运算符如表1-7所示。所有比较运算符返回1表示真,返回0表示假,分别与特殊的变量True和False等价。注意,这些变量名首字母要大写。

表1-7 Python中的比较运算符

比较运算符也可用于字符之间的比较,Python中的字符使用ASCII编码,每个字符都有属于自己的ASCII码,字符比较的本质就是字符ASCII码的比较。

4.逻辑运算符

Python中的逻辑运算符包含and、or和not,如表1-8所示。

表1-8 Python中的逻辑运算符

5.位运算符

Python中的位运算符如表1-9所示。

表1-9 Python中的位运算符

在按位运算中,取反运算较难理解,因为涉及补码的计算。十进制数的二进制原码包括符号位和二进制值,以“60”为例,其二进制原码为“0011 1100”,第一位为符号位,0代表正数,1代表负数。正数的补码与二进制原码相同,负数的补码则为二进制原码符号位保持不变,其余各位取反后在最后一位上加1。

取反运算可以总结为以下5个步骤。

(1)取十进制数的二进制原码。

(2)对原码取补码。

(3)补码取反(得到最终结果的补码)。

(4)取反结果再取补码(得到最终结果的原码)。

(5)二进制原码转换为十进制数。

6.身份运算符

身份运算符用于比较两个对象的存储单位,Python中的身份运算符如表1-10所示。

表1-10 Python中的身份运算符

在身份运算中,内存地址相同的两个变量进行is运算时,返回True;内存地址不同的两个变量进行is not运算时,返回True。

7.成员运算符

成员运算符的作用是判断某个指定值是否存在于某一序列中,包括字符串、列表和元组,Python中的成员运算符如表1-11所示。

表1-11 Python中的成员运算符

8.运算优先级

在Python中,运算通常以表达式的形式进行。表达式由运算符和运算数组成,例如,“1+2”就是一个表达式,其中的“+”是运算符,“1”和“2”则是运算数。一个表达式往往有不止一个运算符,当一个表达式中存在多个运算符时,就需要考虑运算的顺序,即运算符的优先级。

运算符的优先级如表1-12所示,从上往下依次降低,同一优先级的运算符按从左到右的顺序进行运算。

表1-12 运算符的优先级