目录

链式赋值

多元赋值:

增量/减量/乘量/除量 赋值

解压赋值 

非法赋值语句


链式赋值

链式赋值用于同一个对象赋值给多个变量

#例1:将1赋值给x,y,z三个变量
x = y = z = 1
print(x) #1  
print(y) #1  
print(z) #1

分析:

-》=具有右结合性

-》首先z = 1 表示将 1 赋值给 z,同时z = 1 这个子表达式的值也是 1

-》y = z = 1 表示将 z = 1 的值赋给 y,因此 y 的值也是 1,y = z = 1子表达式的值为1

-》以此类推,a 的值也是 1

多元赋值:

-》多元赋值:等号两边的对象都是元组并且元组的小括号是可选的

-》数据赋值给对应相同个数的变量,个数必须保持一致

#例1:将1,2分别赋值给x,y
#元组的括号可以不写,等同于(x,y) = (1,2)
x, y = 1, 2
print(x) #1
print(y) #2
#例2:交换x,y变量的值
x, y = 1, 2
x, y = y ,x
print(x) #2
print(y) #1

分析:

1、内存开辟2个地址空间用来存储1,2 ,然后将x,y变量分别指向这两个地址(x=1,y=2)

2、首先等号左右分别构造两个元组(x,y) , (y,x)

3、等号右侧的元组(y,x)实际存储的是2,1所在的两个地址空间,即(2,1)

4、x,y=y,x 相当于(x, y) = (y对应的值,x对应的值) ,即(x,y)=(2,1)

增量/减量/乘量/除量 赋值

x = 5
x += 1  #相当于x=x+1
print(x) #6
x -= 2  #相当于x=x-1
print(x) #4
x *= 2   #相当于x=x*2
print(x) #8
x /= 4    #相当于x=x/4
print(x) #2

解压赋值 

 解压赋值:可迭代序列或者可迭代对象解压后赋值给多个变量

#例1:将元组的值依次赋值给a,b,c,d,e五个变量
m_tuple = (1,2,3,4,5)
a,b,c,d,e = m_tuple
print(a) #1
print(b) #2
print(c) #3
print(d) #4
print(e) #5
#例2:如果只想使用其中几个元素,可以使用其他(未使用过的)变量名去占位
m_tuple = (1,2,3,4,5)
a,_,c,_,e = m_tuple 
print(a) #1
print(c) #3
print(e) #5
#例3:将列表数据分别赋值给a,b,c,d四个变量
m_list = [1,(2,3),4,5]
a,b,c,d = m_list
print(a) #1
print(b) #(2,3)
print(c) #4
print(d) #5
#例4:将字符串的字符依次赋值给a,b,c三个变量
m_string = 'wel'
a,b,c = m_string
print(a) #'w'
print(b) #'e'
print(c) #'l'
#例5:在解压序列的时候如果不知道序列有多少个元素,此时就需要使用python的星号表达式
x,*y = 1,2,3,4,5
print(x) #1
print(y) #[2,3,4,5]
#例6:有一个比赛需要计算去掉最高分和最低分后的平均分
num_list = [70, 75, 98, 85, 72, 90]
num_list = sorted(num_list, reverse=True)  #首先排序
n_max, *num_list, n_min = num_list #使用星号表达式,取去除头尾的中间的所有数据
print(sum(num_list)/len(num_list))
#例7:将多个变量组成元组,赋值给单一变量
x = 1,2,3,4,5  #右侧会自动生成元组,然后赋值给X
print(x) #(1,2,3,4,5)

非法赋值语句

z = 1
x=(y=z+1)  #此赋值语句是错误的

分析:

x被赋值 " y = z + 1 ",但y= z+1是个赋值语句,作为一个整体没有返回值, x获取的是一个空值

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐