#Python 的解包操作
解包操作(Unpacking)允许我们将一个可迭代对象(如列表、元组、字典等)中的元素提取到多个变量中。
#序列解包
最常见的解包是从元组或列表中提取元素。例如:
student_info:tuple[str, int, str] = ("Yukari", 17, "female")
name, age, sex = student_info
print(name, age, sex)
直接对字典进行序列解包,得到的是字典的键。例如:
score_list:dict[str,int] = {
'Tom': 88,
'Jerry': 99,
'Spike': 66
}
key1, key2, key3 = score_list
print(key1, key2, key3)
#部分解包
可以在序列解包中使用下划线(_
)忽略不需要的元素。例如:
students:list[str] = ["Tom", "Jerry", "Spike", "Tuffy"]
first, _, _, last = students
print(first, last)
#使用星号
使用星号(*
)可以将元组、数组或集合拆分成独立的元素。例如:
students:list[str] = ["Tom", "Jerry", "Spike", "Tuffy", "Tyke", "Butch"]
warp1 = [students] # warp1 变成了二维列表 list[list[str]]
warp2 = [*students] # students 被解包,warp2 是 list[str]
print(warp1)
print(warp2)
可以在序列解包的左侧使用星号(*
)获取多个元素。例如:
students:list[str] = ["Tom", "Jerry", "Spike", "Tuffy", "Tyke", "Butch"]
first, *_, last = students # _ 是数组,获取多个元素
print(first, last)
#键值对解包
通过 items
方法可以获得字典的键值对元组的序列,从而可以通过序列解包获取字典的键值对。
score_list:dict[str,int] = {
'Tom': 88,
'Jerry': 99,
'Spike': 66
}
# 查看键值对
print(score_list.items())
# 解包单个键值对
name, score = list(score_list.items())[0]
print(name, score)
# 通过键值对解包简化 for 循环
for key,value in score_list.items():
print(key, value)
#使用星号解包字典
使用 一个 星号(*
)可以将字典拆分成独立的键,使用 两个 星号(*
)可以将字典拆分成独立的键值对。例如:
score_list:dict[str,int] = {
'Tom': 88,
'Jerry': 99,
'Spike': 66
}
wrap1 = {*score_list} # score_list 被拆分成独立的键,wrap1 是 set[str]
wrap2 = {**score_list} # score_list 被拆分成独立的键值对,wrap2 是 dict[str,int]
print(wrap1)
print(wrap2)