前言
组包 和 拆包 是Python中的一种独有写法。通俗来讲,将多个值封装成一个变量(复合类型数据,如列表,元组,字典)的过程叫组包。将一个变量(容器)拆分成多个变量值的过程叫拆包。
应用场景:
1.交换变量.
2.函数可以同时返回多个值
3. 一次性获取到 元组, 列表, 字典中的每个数据.
组包
# 列表
list1 = [11, 22, 33, 44, 55]
# 元组
tuple1 = ('aa', 'bb', 'cc')
# 字典
dict1 = {'name': '张三', 'age': 23}
#字符串
a,b,c='abc'
拆包
# 从 列表 拆包
list1 = [11, 22, 33, 44, 55]
a, b, c, d, e = list1
print(a, b, c, d, e)
=>11 22 33 44 55
# 从 元组 拆包
tuple1 = ('aa', 'bb', 'cc')
x, y, z = tuple1
print(x, y, z)
=>aa bb cc
# 从 字典 拆包, 只能获取 键 的值.
dict1 = {'name': '张三', 'age': 23}
k1, k2 = dict1
print(k1, k2)
=>name age
# 生成器
a,b,c=[i for i in range(3)]
print(a,b,c)
=>0 1 2
# 迭代器
a,b,c=enumerate(['a','b','c'])
print(a,b,c)
=>(0, 'a') (1, 'b') (2, 'c')
注意:如果待赋值变量与可迭代对象数量不一致则会报错,但可用*号表示多个元素。
*
可以用于扩展列表,将一个列表中的元素拆分后传递给另一个列表。
#列表拆包中的*
a,*b,c=[1,2,3,4,5]
print(a,b,c)
=>1 [2, 3, 4] 5
#元组拆包中的*
a,*b,c=(1,2,3,4,5)
print(a,b,c)
=>1 [2, 3, 4] 5
#集合拆包中的*
a,*b,c={1,2,3,4,5}
print(a,b,c)
=>1 [2, 3, 4] 5
#字典拆包中的*
a,*b,c={1:'a',2:'b',3:'c',4:'d',5:'e'}
print(a,b,c)
=>1 [2, 3, 4] 5
场景应用
1.交换变量
a=1
b=2
a,b=b,a
print(a,b)
=>2 1
2.函数可以同时返回多个值
2.1 函数同时返回多个值,默认会用元组封装返回值
def fun1():
return 1,2,3 # 同时返回多个值,默认会用元组封装
num1=fun1()
print(num1)
=>(1, 2, 3)
2.2 可以手动把多个返回值封装成 列表或者集合, 然后返回
def fun2():
return [1, 2, 3] # 当然也可以手动把多个值封装成 列表或者集合, 然后返回
num2=fun2()
print(num2)
=>[1, 2, 3]
3. 一次性获取到 元组, 列表, 字典中的每个数据
见上文
希望可以帮到你,如果对你有帮助,请给我一个三连鼓励一下我好吗😁😁😁