Python赋值魔法

序列解包:

  赋值语句有很多,变量赋值、列表中的元素赋值、切片赋值、字典项赋值

  同时给多个变量赋值

a, b, c = 1, 2, 3
print(a, b, c)      # 1 2 3

# 交换变量的值
a, b = b, a
print(a, b, c)      # 2 1 3

  序列解包(可迭代对象解包),将一个可迭代对象解包,得到的值存储到一系列变量

a = "num"
x, y, z = a
print(x, y, z)  # n u m

  假如要从字典随便获取(删除)一个键值对,可以使用popitem,会以元组的形式返回,我们可以直接对元组解包到两个变量

d = {"name": "shuai", "age": 23}
key, value = d.popitem()
print(key, value)       # age 23

  注意解包的元素个数与接收的变量必须相同,否则会引号异常

d = {"name": "shuai", "age": 23}
key, value, name= d.popitem()       # ValueError: not enough values to unpack (expected 3, got 2)

  可以使用*来收集对于的值,这样无需保证值和变量个数相同,带*的变量总是一个列表

a = [1, 2, 3, 4,5]

x, y, *z = a
print(z)    # [3, 4, 5]

s, *d, f = a
print(d)    # [2, 3, 4]

str = "shuai"
j, *k, l, m = str

print(j, k, l, m)       # s ['h', 'u'] a i

  


链式赋值:

  赋值的快捷方式,将多个变量关联到一个值

a = b = c = 1
print(a,b,c)        # 1 1 1

  


增强赋值:

  将+移动到=前面,适用于所有的标准运算符,可以让代码更紧凑、更简洁、可读性更强

x = x+1
# 可以写成
x += 1

  

猜你喜欢

转载自www.cnblogs.com/Mr-chenshuai/p/9917446.html