持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第8天,点击查看活动详情
0 环境
- 编辑器:idea或vscode
- 系统版本:windows10
- python版本:3.9.6
1 八大变体
当我们定义了一个列表变量,lists = list(range(7)),但我想解构,变量不全要,总不能写7个变量吧,变体针对不同的需要,拿lists的值,下面所述,就是关于8种组合方式的描述和代码解释。
2 第一种
我取值头尾,以及其他的值,如下代码:定义个列表变量,它里面的元素[0...7],定义头尾以及其他值,需要按照head,mid,tail,注意一点:第一个变量的位置,第二点,中间的mid一定要是。
def package_demo():
lists = list(range(8))
head, *mid, tail = lists
print("head: ", head)
print("mid: ", mid)
print("tail: ", tail)
3 第二种
取值头,以及其他值。如下代码:定义个列表变量,它里面的元素[0...7],定义头以及其他值,需要按照head,*tail,tail也就说除第一个元素外的其他所有元素。
def package_demo():
lists = list(range(8))
head, *tail = lists
print("head: ", head)
print("tail: ", tail)
4 第三种
除了最后一个元素,其他所有元素head全包。
def package_demo():
lists = list(range(8))
*head, tail = lists
print("head: ", head)
print("tail: ", tail)
5 第四种
等号左边的变量,总有一个*xx变量,会直接报错。
6 四种变体小结
如上面的例子,元素按照顺序(索引值),从左往右一次取出元素赋值给等号左边的变量,也是从左往右赋值。上面的四种变体就是关于变量怎么匹配元素的事情了,头尾匹配,其他所有元素匹配,*head,tail和head,*tail正好相反,都是可以的,一个是除了最后一个元素,其他所有元素都要,下一个是除了第一个元素,其他所有元素都要,但是只有单个星号,无其他变量,直接会报错。