链式表达式
>>> a = 1
>>> b = 2
>>> c = 3
>>> a < b == 3 #链式表达式 a < b == c 测试a是否小于b,且b是否等于c
False
in,not in操作符
in操作符
in操作符可用于判断所给数据是否包含于指定的数字序列、字符串、列表、元组、集合中,或者判断所给值是否包含于所给字典的键中,not in则相反
注:not可对任意比较结果或任意Boolean表达式进行否定,且not在比较符中有最高优先级,or优先级最低,所以A and not B or C 等同(A and (not B)) or C。总之,不确定的时候,用括号没错。
1.数字序列
>>> 1 in range(0, 5)
True
2.字符串
>>> string = "ishouke"
>>> "shouke" in string
True
>>> "shouke" in "ishouke"
True
3.列表
>>> "sho" in ["i", "shou", "ke"]
False
>>> "shou" in ["i", "shou", "ke"]
True
4.元组
>>> "shou" in ("i", "shou", "ke")
True
5.集合
>>> "shou" in {"i", "shou", "ke"}
True
6.字典
>>> "shou" in {1:"i", 2:"shou", 3:"ke"}
False
>>> 1 in {1:"i", 2:"shou", 3:"ke"}
True
说明:针对字典来说,仅可用于判断所给值是否包含在字典的键中,即判断键是否存在
7.文件
>>> for line in open("d:\\test.txt"):
... print(line)
...
shouke你好
再见,2014
newyear,2015
not in
>>> "mark" not in ["i", "shou"]
True
is, is not操作符
操作符is和is not比较两个对象是否是相同的对象。
>>> "shouke" is "shouke"
True
>>> str1 = "shouke"
>>> str2 = "shouke"
>>> str1 is str2
True
>>> list1 = ["i", "shou", "ke"]
>>> list2 = ["i", "shou", "ke"]
>>> list1 is not list2
True
>>> ["i", "shou", "ke"] is ["i", "shou", "ke"]
False
>>> list2 = ("i", "shou")
>>> list1 = ("i", "shou")
>>> list1 == list2
True
>>> dic1 = {"a":"8"}
>>> dic2 = {"a":"8"}
>>> dic1 is dic2
False
个人理解:两个值相等的可变对象,不是同一对象。
and、or、not操作符
and,or,not操作符,分别代表逻辑:与,或,非
and和or就是所谓的短路运算符,参数总是从左往右算,结果确定时就停止。返回短路运算符的值为最后计算的参数
and运算
如果左边的运算、值或者对象为True,才会对右侧表达式求值并返回右侧计算结果,否则,就停止运算并输出表达式结果、值、对象
>>> False and True
False
>>> 1 and 9+10
19 #注意输出结果为右侧的值
>>> 5 < 2 and True
False
>>> 0 and True
0
or运算
对 or 左边的表达式求值,如果左边的运算、值或者对象为True,输出表达式结果,停止对右边表达式求值,如果左边为False,继续对右边的表达式求值并输出结果
>>> 5 + 1 or False
6 #注意,输出是左边的表达式结果
>>> False or 7 + 5
12 #注意,输出是右边的表达式结果
not操作符
>>> not False
True
>>> not 3 < 5
False
位运算操作符
~ 取反操作符
对每一个二进制位+1取反,如果二进制位为1则结果为0,否则为1
| 或操作符
两个二进制位,或运算,只要其中有一个位为1则结果为1,否则为0
& 与操作符
两个二进制位,与运算,如果两个二进制位相同则与结果等于二进制位自身,否则为0
^ 异或操作符
两个二进制位,或运算,如果两个二进制位相同则异或结果为0,否则为1
3 –>二进制:0000 0011
2 –>二进制:0000 0010
>>> 2 ^ 3
1
说明:
2 ^ 3
0000 0010
^
0000 0011
---------
0000 0001 -->十进制:1
>>> 3^2^2
3
>>> 4^5^5
4
说明:一个数对另一个数进行两次异或运算,结果为其本身
>>> 2 | 3
3
说明:
2 | 3
0000 0010
|
0000 0011
---------
0000 0011 -->十进制:3
>>> 2 & 3
2
说明:
2 & 3
0000 0010
&
0000 0011
---------
0000 0010 -->十进制:2
>>> ~3
-4
说明:
~3
0000 0011
~
--------
1111 1100
符号位即最高位,为1则表示负数,计算机将其识别为补码(负数以补码形式存在),按补码的计算过程,可求其原码。计算过程:按照求负数补码的逆过程,符号位不变,数值部分最低位减1,然后取反。但是对二进制数来说,先减1后取反和先取反后加1得到的结果是一样的,故仍可采用取反再加1的方法。
方法一:
1111 1100
~
--------
1000 0011
+ 1
----------
1000 0100
方法二:
1111 1100
- 1
--------
1111 1011
~
----------
1000 0100 -->十进制:-4
注:
1.符号位为0,表示正数,为1则表示负数;
2.正数的补码为其本身,负数的补码为原码取反后再加1
优先级从高到低,依次为~、&、^、|
利用if else实现三目运算符
例子:如果a =3,则b=5,否则b=0
>>> a = 3
>>> b = 5 if a==3 else 0
>>> b
5
>>> a = 4
>>> b = 5 if a==3 else 0
>>> b
0
转载请注明:XAMPP中文组官网 » Python基础教程 操作符与表达式