情绪的尽头,不是脏话,不是发泄,而是沉默。
可迭代序列或者可迭代对象解压后赋值给多个变量
前提条件:变量的数量必须和序列元素的数量一样多。
变量个数多于序列元素个数报错:ValueError: not enough values to unpack(expected 6, got 5)
变量个数少于元素个数报错:ValueError: too many values to unpack(expected 4)
示例如下:
Tuple(元组)
num_tuple = (1, 2, 3, 4, 5)
a, b, c, d, e = num_tuple
print(a, b, c, d, e)
List(列表)
num_list = [1, 2, (3, 4), 5]
a, b, c, d = num_ list
print(a, b, c, d)
String(字符串)
name_str = 'chb'
a, b, c = name_str
print(b)
如果你的只想使用其中几个元素,可以使用其他(未使用过的)变量名去占位,示例如下:
num_tuple = (1, 2, 3, 4, 5)
a, _, c, _, e = num_tuple
print(a, c, e)
有些时候你在解压序列的时候并不知道这个序列有多少个元素,因此你也不知道需要多要个变量来占位,此时就需要
使用python的星号表达式,示例如下:
例如现在有一个比赛需要计算去掉最高分和最低分后的平均分,先排序,再使用星号表达式。
score_list = [85, 86, 78, 99, 74, 78]
score_list = sorted(score_list, reverse=True)
s_max, *s_mid, s_min = score_list
print(sum(s_mid)/len(s_mid))
注意以上解压的s_mid永远都是列表类型。
嵌套序列中使用占位变量
v_list = ['name', 'age', 10, ['play', 'ball', 'lol']]
name, *_, [*_, hobby] = v_list
print(name, hobby)
如果感觉本文对您有帮助可以点个赞哦
本文为学习笔记,转载请标明出处
本文仅供交流学习,请勿用于非法途径
仅是个人意见,如有想法,欢迎留言
网友评论