1.基本概念

Python等式右侧出现逗号分隔的多值的时候,就会将这几个值封装到元组中,这种操作称为封装packing

1
2
t1 = 1,2
print(type(t1))

Python中等式右侧是一个容器类型,左侧是逗号分隔的多个标识符,将右侧容器中的一个个和左侧标识符一一对应,这种操作称为结构unpacking

1
2
3
x,y = (1,2)
print(x)
print(y)

2.简单解构

1
2
3
4
5
6
7
8
9
10
11
12
13
x, y = 1, 2
x, y = y, x
print(x,y)
a, b = 2, 3
print(a, b)
c, d = (4, 5)
print(c, d)
e, f = [6, 7]
print(e, f)
g, h = {8, 9}
print(g, h)
i, j = {'m': 10, 'n': 11}
print(i, j)

3.剩余变量解构

带*的变量,会尽可能手机剩余数据放置在一个 列表

1
2
3
4
5
6
7
8
9
a, *b, c = range(5)
print(a, b, c)
*b, c = range(5)
print(b, c)
b, *c = range(5)
print(b, c)
# 丢弃变量
_, *a, _ = range(5)
print(a)

注:
1.*a = range(5) 是错误的,剩余变量不能单独使用
2.a, *b, *c ,d = range(5) 是错误的,剩余变量仅能使用一次

4.练习

  • 1.从nums = [1,(2,3,4),5]中,提取其中4出来
1
2
3
nums = [1,(2,3,4),5]
_, (*_, values), _ = nums
print(values)
  • 2.从list(range(10))中,提取第二个、第四个、倒数第二个元素
1
2
_, v1, _, v2, *_, v3, _ = list(range(10))
print(v1, v2, v3)
  • 3.环境变量JAVA_HOME=/usr/bin,返回环境变量名和路径
1
2
3
4
5
6
# 法一
name, path = 'JAVA_HOME=/usr/bin'.split('=', maxsplit=1)
print(name,path)
# 法二(partition是三元组)
name, sep, path = 'JAVA_HOME=/usr/bin'.partition('=')
print(name,path, sep)