x = (a,b)[condition based on the value of a]
# 其实际含义是:False相当于0,True相当于1,所以condition为False时,相当于 (a,b)[0];为True时,相当于(a,b)[1]。即分别取元组(a,b)的第一个元素、第二个元素。
x = (a, a-9)[a<10] 等效于: x = a if a<10 else (a-9)
连续赋值:
# Assign values directly
a, b = 0, 1
assert a == 0
assert b == 1
# Assign values from a list
(r,g,b) = ["Red","Green","Blue"]
assert r == "Red"
assert g == "Green"
assert b == "Blue"
# Assign values from a tuple
(x,y) = (1,2)
assert x == 1
assert y == 2
链式赋值
通俗讲:链式赋值是将同一个值赋给多个变量,有点像并行赋值;
简单讲:链式赋值用于同一个对象赋值给多个变量;
x = y = 123 相当于 x = 123; y = 123;
系列解包赋值
序列解包是将多个赋值操作同时进行的方法:将多个值的序列解开,然后放到变量的序列中;
系列数据赋值给对应相同个数的变量(个数必须保持一致)。
a,b,c = 4,5,6 相当于 a = 4; b = 5; c = 6;
操作:
使用系列解包赋值实现变量互换
a,b = 1,2
a,b = b,a
print(a,b)
增量赋值
增量赋值就是将一个变量进行表达式后重新赋给变量,如 x = x + 1。
x = 3
x += 1
print(x) # 4
y = 1
y = y + 1
print(y) # 2
x *= 2
print(x) # 8
s = 'job'
s += 'name'
print(s) # jobname 字符串拼接
s *= 3
print(s) # jobnamejobnamejobname
注意事项:
1、在序列解包的时候赋值符号左边的变量数目和序列中的元素数目是完全一致的;
2、所谓增量赋值对于 “*”,“/”, “%” 等标准运算符都是成立的;
序列解包可以用于元组、列表、字典。序列解包可以让我们方便的对多个变量赋值。
>>> x,y,z = (10,20,30)
>>> (a,b,c) = (8,9,10)
>>> [a,b,c] = [10,20,30]
30
序列解包用于字典时,默认是对“键”进行操作;
如果需要对键值对操作,则需要使用 items();
如果需要对“值”进行操作,则需要使用 values()。
# 定义一个字典 a
>>> a = {'name':'Python','age':87,'job':'teacher'}
{'name': 'Python', 'age': 87, 'job': 'teacher'}
# 默认是对 键 进行操作
>>> x,y,z = a
'name'
'age'
'job'
# 对 键值对 进行操作
>>> x1,y1,z1 = a.items()
('name', 'Python')
('age', 87)
('job', 'teacher')
# 对 值 进行操作
>>> x2,y2,z2 = a.values()
'Python'
'teacher'
The End
————————————————