Python之哈希表-封装和解构
1, 2
t = 1, 2
t = (1, 2)
- Python等式右侧出现逗号分隔的多值的时候,就会将这几个值封装到元组中。这种操作称为封装 packing。
a, b = 1, 2
a, b
- Python中等式右侧是一个容器类型,左侧是逗号分隔的多个标识符,将右侧容器中数据的一个个和左侧标识符一一对应。这种操作称为解构unpacking。
- 从Python3开始,对解构做了很大的改进,现在用起来已经非常的方便快捷。
- 封装和解构是非常方便的提取数据的方法,在Python、JavaScript等语言中应用极广。
a, b, c = range(3)
a
b
c
a, b = [1, 2]
a, b = (1, 2)
a, b = 3, 4
a, b = range(3, 5)
a, b = 'ab'
a, b = b'ab'
a, b = bytearray(b'ab')
a, b = {1, 2}
a
b
a, b = {'a':100, 'b':200}
a
b
剩余变量解构
- 在Python3.0中增加了剩余变量解构(rest)
a, *rest, b = 1, 2, 3
a
b
rest
a, *r, b = range(10)
a, b
r
a, *r, b = b'abc'
a, b
r
- 不知道大家想明白没有,为什么得到的结果是979899呢?
a, *r = b'abc'
print(a)
print(r)
*r, b = 'abc'
print(b)
print(r)
a, *_ = 1, 2, 3
print(a)
print(_)
_, *a, _ = range(5)
print(1, _)
print(2, a)
print(3, _)
- 结果是 ‘4, [1, 2, 3], 4’ ,这里涉及到一个覆盖问题,因为a前后都是_
x = [(1, 2)]
print(x, len(x))
x = [*(1, 2)]
print(x, len(x))
x = [range(5)]
print(x, len(x))
x = [*range(5)]
print(x, len(x))
x = list(range(5))
print(x, len(x))
[x, [a, b, c], z] = [1, [2, 3, 4], 5]
[_, [*_, c], _] = [1, [2, 3, 4], 5]
_, a, _, b, *_, c, _ = list(range(10))
print(a, b, c)
报错
a, b, c = (1,)
a, b, c = range(5)