1月15日
5.1 运算符与它们的用法
运算符 |
名称 |
说明 |
例子 |
** |
幂 |
返回x的y次幂 |
3 ** 4得到81(即3 * 3 * 3 * 3) |
/ |
除 |
x除以y |
4/3得到1(整数的除法得到整数结果)。4.0/3或4/3.0得到1.3333333333333333 |
// |
取整除 |
返回商的整数部分 |
4 // 3.0得到1.0 |
% |
取模 |
返回除法的余数 |
8%3得到2。-25.5%2.25得到1.5 |
<< |
左移 |
把一个数的比特向左移一定数目(每个数在内存中都表示为比特或二进制数字,即0和1)
|
2 << 2得到8。——2按比特表示为10 |
>> |
右移 |
把一个数的比特向右移一定数目 |
11 >> 1得到5。——11按比特表示为1011,向右移动1比特后得到101,即十进制的5。 |
& |
按位与 |
数的按位与 |
5 & 3得到1。 |
| |
按位或 |
数的按位或 |
5 | 3得到7。 |
^ |
按位异或 |
数的按位异或 |
5 ^ 3得到6 |
~ |
按位翻转 |
x的按位翻转是-(x+1) |
~5得到6。 |
< |
小于 |
返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 |
5 < 3返回0(即False)而3 < 5返回1(即True)。比较可以被任意连接:3 < 5 < 7返回True。 |
<= |
小于等于 |
返回x是否小于等于y |
x = 3; y = 6; x <= y返回True。 |
== |
等于 |
比较对象是否相等 |
x = 2; y = 2; x == y返回True。x = 'str'; y = 'stR'; x == y返回False。x = 'str'; y = 'str'; x == y返回True。 |
!= |
不等于 |
比较两个对象是否不相等 |
x = 2; y = 3; x != y返回True。 |
not |
布尔非 |
如果x为True,返回False。如果x为False,它返回True。 |
x = True; not y返回False。 |
and |
布尔与 |
如果x为False,x and y返回False,否则它返回y的计算值。 |
x = False; y = True; x and y,由于x是False,返回False。在这里,Python不会计算y,因为它知道这个表达式的值肯定是False(因为x是False)。这个现象称为短路计算. |
or |
布尔或 |
如果x是True,它返回True,否则它返回y的计算值。 |
x = True; y = False; x or y返回True。短路计算在这里也适用。 |
运算符(由低到高) |
描述 |
名称(一些特殊的方法) |
说明 |
1.lambda |
Lambda表达式 |
13.*,/,% |
乘法、除法与取余 |
2.or |
布尔“或” |
14.+x,-x |
正负号 |
3.and |
布尔“与” |
15.~x |
按位翻转 |
4.not x |
布尔“非” |
16.** |
指数 |
5.in,not in |
成员测试 |
17.x.attribute |
属性参考 |
6.is,is not |
同一性测试 |
18.x[index] |
下标 |
7.<,<=,>,>=,!=,== |
比较 |
19.x[index:index] |
寻址段 |
8.| |
按位或 |
20.f(arguments...) |
函数调用 |
9.^ |
按位异或 |
21. (experession,...) |
绑定或元组显示 |
10.& |
按位与 |
22. [expression,...] |
列表显示 |
11.<<,>> |
移位 |
23.{key:datum,...} |
字典显示 |
12.+,- |
加法与减法 |
24.'expression,...' |
字符串转换 |
一些特殊的,比如赋值运算符那样的运算符是由右向左结合的,即a = b = c
被处理为a = (b = c)
。分解为:b=c;a=b
1-12
range
返回一个序列的数。这个序列从第一个数开始到第二个数为止。例如,range(1,5)
给出序列[1, 2, 3, 4]
。默认地,range
的步长为1。如果我们为range
提供第三个数,那么它将成为步长。例如,range(1,5,2)
给出[1,3]
。记住,range 向上 延伸到第二个数,即它不包含第二个数。