python解压赋值

情绪的尽头,不是脏话,不是发泄,而是沉默。

上一篇:python获取相对路径、绝对路径的file使用

可迭代序列或者可迭代对象解压后赋值给多个变量

前提条件:变量的数量必须和序列元素的数量一样多。

变量个数多于序列元素个数报错: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)

如果感觉本文对您有帮助可以点个赞哦

本文为学习笔记,转载请标明出处

本文仅供交流学习,请勿用于非法途径

仅是个人意见,如有想法,欢迎留言

你可能感兴趣的:(python解压赋值)