Python3快速入门-3.1运算符

3.运算符和流程控制语句

3.1运算符

3.1.1算术运算符

(1)运算符+:两个操作数相加,适用于数字、字符串、列表、元组。

(2)运算符-:两个操作数相减,适用于数字、集合(差集)。

(3)运算符*:两个操作数相乘,适用于数字、字符串、列表、元组。

(4)运算符/:两个操作数相除,返回浮点数,适用于数字。

(5)运算符%:取余,返回两个操作数相除的余数,适用于数字。

(6)运算符//:取整除,返回两个操作数相除得商的整数部分,适用于数字。

(7)运算符**:返回操作数的n次幂,适用于数字。

>>> a = 3

>>> b = 2

>>> a + b

5

>>> a - b

1

>>> a * b

6

>>> a / b

1.5

>>> a % b

1

>>> a // b

1

>>> a ** b

9

3.1.2赋值运算符

(1)运算符=:将数据赋值给变量。

(2)运算符+=:a += b,将a加b再赋值给a,等价于a = a + b。

(3)运算符-=:a -= b,将a减b再赋值给a,等价于a = a - b。

(4)运算符*=:a *= b,将a乘b再赋值给a,等价于a = a * b。

(5)运算符/=:a /= b,将a除b再赋值给a,等价于a = a / b。

(6)运算符%=:a %= b,将a除b取余后再赋值给a,等价于a = a % b。

(7)运算符//=:a //= b,将a除b将商取整后再赋值给a,等价于a = a // b。

(8)运算符**=:a **= b,求a的b次幂数值,再赋值给a,等价于a = a ** b。

>>> a = 3

>>> b = 2

>>> a += b

>>> a

5

>>> a -= b

>>> a

3

>>> a *= b

>>> a

6

>>> a /= b

>>> a

3.0

>>> a %= b

>>> a

1.0

>>> a //= b

>>> a

0.0

>>> a **= b

>>> a

0.0

注:Python中不支持++、--操作。

3.1.3比较运算符

(1)运算符==:如果两个操作数相等,则返回True。

(2)运算符!=:如果两个操作数不相等,则返回True。

(3)运算符>:如果左操作数大于右操作数,则返回True。

(4)运算符>=:如果左操作数大于或等于右操作数,则返回True。

(5)运算符<:如果左操作数小于右操作数,则返回True。

(6)运算符<=:如果左操作数小于或等于右操作数,则返回True。

>>> a = 1

>>> b = 2

>>> a == b

False

>>> a != b

True

>>> a > b

False

>>> a < b

True

运算符支持数据类型有数字、字符串、列表、元组、集合(无序,无法判断大小,只支持==和!=)。

>>> s1 = 'abc'

>>> s2 = 'abd'

>>> s1 > s2

False

>>> l1 = [1,2,3]

>>> l2 = [1,2,4]

>>> l1 < l2

True

>>> tup1 = (1,2,3)

>>> tup2 = (1,2,4)

>>> tup1 < tup2

True

>>> set1 = {1,2,3}

>>> set2 = {3,2,1}

>>> set1 == set2

True

>>> set1 != set2

False

3.1.4逻辑运算符

(1)运算符and:若2个操作数都为真,则返回True,表示与。

(2)运算符or:若2个操作数中任一操作数为真,则返回True,表示或。

(3)运算符not:若操作数为假,则返回True,表示非。

>>> 1 and 2

2

>>> 1 or 2

1

>>> not 1

False

>>> not 0

True

当1和2进行与运算,由于操作数1为真,则需要知道操作数2才可以得到运算结果,因此返回操作数2。

当1和2进行或运算,由于操作数1为真,则不需要知道操作数2就可以得到运算结果,因此返回操作数1。

逻辑运算符支持的数据类型有数字、列表、元组、集合、字典。

>>> 'hello' and 'world'

'world'

>>> '' and 'world'

''

>>> [1,2,3] and [4,5,6]

[4, 5, 6]

>>> [] and [4,5,6]

[]

>>> (1,2,3) and (4,5,6)

(4, 5, 6)

>>> () and (4,5,6)

()

>>> {1,2,3} and {4,5,6}

{4, 5, 6}

>>> set() and {4,5,6}

set()

>>> {1:'hello'} and {1:'world'}

{1: 'world'}

>>> {} and {1:'world'}

{}

3.1.5成员运算符

  (1)运算符in:若在序列中找到元素,返回True。

(2)运算符not in:若在序列中没有找到元素,返回True。

成员运算符支持的数据类型有字符串、列表、元组、集合、字典。

>>> s = 'hello'

>>> 'h' in s

True

>>> l = [1,2,3,'hello']

>>> 'hello' in l

True

>>> set1 = {1:'hello',2:'world'}

>>> 2 in set1

True

3.1.6身份运算符

(1)运算符is:若操作数的地址相同,则返回True。

(2)运算符is not:若操作数的地址不同,返回True。

>>> a = 1

>>> b = 1

>>> a is b

True

>>> s1 = 'hello'

>>> s2 = 'hello'

>>> s1 is s2

True

>>> l1 = [1,2,3]

>>> l2 = [1,3,2]

>>> l1 == l2 #列表是有序的

False

>>> l1 is l2

False

>>> tup1 = (1,2,3)

>>> tup2 = (1,3,2)

>>> tup1 == tup2 #元组是有序的

False

>>> tup1 is tup2

False

>>> set1 = {1,2,3}

>>> set2 = {1,3,2}

>>> set1 == set2 #集合是无序的、互异的

True

>>> set1 is set2

False

>>> d1 = {1:'hello',2:'world'}

>>> d2 = {2:'world',1:'hello'}

>>> d1 == d2 #字典是无序的,key值是唯一的

True

>>> d1 is d2

False

比较运算符==和身份运算符is到底有什么不同?

在Python中,一切事物都是对象,对象有3个基本元素:id、value、type。比较运算符==判断的是value是否相同;身份运算符is判断的是id(地址)是否相同。

>>> set1 = {1,2,3}

>>> set2 = {3,2,1}

>>> set1 == set2

True

>>> id(set1)

61223680

>>> hex(id(set1))

'0x3a63300'

>>> id(set2)

61223800

>>> hex(id(set2))

'0x3a63378'

>>> set1 is set2

False

>>> a = 1

>>> b = 1

>>> id(a)

267241600

>>> id(b)

267241600

>>> a is b

True

变量的value可以用比较运算符==判断;变量的id可以用身份运算符is判断;那变量的type怎么判断呢?

方法1:使用type()函数

>>> s = 'hello'

>>> type(s)

<class 'str'>

>>> type(s) == str

True

方法2:使用isinstance()函数

>>> s = 'hello'

>>> type(s)

<class 'str'>

>>> isinstance(s,str)

True

>>> #isinstance的参数2可以用元组来表示多个数据类型,若是其中之一,返回True

>>> isinstance(s,(int,float,str))

True

3.1.7位运算符

(1)运算符&:将二进制操作数1和操作数2按位与,然后返回数值。

(2)运算符|:将二进制操作数1和操作数2按位或,然后返回数值。

(3)运算符^:将二进制操作数1和操作数2按位异或,然后返回数值。

(4)运算符~:将二进制操作数按位取反,然后返回数值。

(5)运算符<<:将二进制操作数按位左移,然后返回数值。

(6)运算符>>:将二进制操作数按位右移,然后返回数值。

>>> a = 14

>>> b =3

>>> bin(a)

'0b1110'

>>> bin(b)

'0b11'

>>> bin(a & b)

'0b10'

>>> bin(a | b)

'0b1111'

>>> bin(a ^ b)

'0b1101'

>>> bin(~a)

'-0b1111'

>>> bin(~b)

'-0b100'

>>> bin(a >> 2)

'0b11'

>>> bin(b << 2)

'0b1100'

3.1.8运算符优先级

序号

运算符

描述

1

()

加括号后表示优先执行

2

**

指数运算

3

~

按位取反

4

*  /  %  //

乘、除、取余、取整除优先级相等

5

+  -

加、减

6

<<  >>

左移、右移位运算符,优先级相等

7

&

按位与

8

^  |

按位异或、按位或

9

==  !=  >  >=  <  < =

比较运算符

10

is    is not

身份运算符

11

in    not in

成员运算符

12

not  and  or

逻辑运算符,优先级not > and > or

13

=  +=  -=  *=  /=  %=  //=  **=

赋值运算符

 

上表中运算符优先级从高到低,需要注意的是逻辑运算符的优先级:not > and > or。

>>> not 1 or 2 and 3

3

在表达式的运算中,若运算符优先级相同,则执行顺序是从左向右。

我看了下网上的运算符优先级表,感觉不怎么正确。我自己重新做了一个运算符优先级表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值