'''
拆包: 把一个容器类型(例如: 列表, 元组, 字典), 变成多个 "单值"类型, 1 -> 多
组包: 把多个"单值"类型, 合并成一个整体(例如: 列表, 元组, 字典) 多 -> 1
细节:
1. 拆包的时候, 变量格式要和容器中的元素个数一致.
2. 对字典拆包, 获取的是所有的键.
'''
# 列表操作
list1 = [10, 20, 30, 'abc', True] # 组包
a, b, c, d, e = list1 # 拆包
print(a, b, c, d, e)
# 元组操作
tuple1 = (10, 'aa', 10.3, False)
a1, b1, c1, d1 = tuple1
print(a1, b1, c1, d1)
# 字典操作
dict1 = {'name': '刘亦菲', 'age': 33}
k1, k2 = dict1 # 拆包只能拆到 键.
print(k1, k2)
# 集拆包
set1 = {10, 10.3, 'abc', True}
a, b, c, d = set1
print(a, b, c, d)
print('-' * 13)
# 字典遍历方式, 根据键值对获取键和值. 即: 结婚证找丈夫和妻子.
dict1 = {'name': '刘亦菲', 'age': 33}
for item in dict1.items():
print(f'{item[0]} = {item[1]}')
# 上述格式优化版
# 拆包
for k,v in dict1.items():
print(f'{k} = {v}')
python -m SimpleHTTPServer 8080
'''
需求:
已知有a,b两个变量, 初始化值分别是10, 20, 请用所学, 交换它们的结果, 实现 a = 20, b = 10
并打印结果.
解决方案:
方式1: 通用版, 采用临时变量.
方式2: 针对于数字版, 采用算术运算符实现.
方式3: Python版, 拆包.
'''
# 1. 定义两个变量.
a, b = 10, 20
print(f'交换前, a = {a}, b = {b}')
# 2. 交换两个变量的值.
# 方式1: 通用版, 采用临时变量.
# tmp = a # a=10, b=20, tmp=10
# a = b # a=20, b=20, tmp=10
# b = tmp # a=20, b=10, tmp=10
# 方式2: 针对于数字版, 采用算术运算符实现.
# a = a + b # a=30, b=20
# b = a - b # a=30, b=10
# a = a - b # a=20, b=10
# 方式3: Python版, 拆包.
a, b = b, a
# 3. 打印结果.
print(f'交换后, a = {a}, b = {b}')