python笔记 解构上

124 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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)

image.png

3 第二种

取值头,以及其他值。如下代码:定义个列表变量,它里面的元素[0...7],定义头以及其他值,需要按照head,*tail,tail也就说除第一个元素外的其他所有元素。

def package_demo():
    lists = list(range(8))
    head, *tail = lists
    print("head: ", head)
    print("tail: ", tail)

image.png

4 第三种

除了最后一个元素,其他所有元素head全包。

def package_demo():
    lists = list(range(8))
    *head, tail = lists
    print("head: ", head)
    print("tail: ", tail)

image.png

5 第四种

等号左边的变量,总有一个*xx变量,会直接报错。

image.png

6 四种变体小结

如上面的例子,元素按照顺序(索引值),从左往右一次取出元素赋值给等号左边的变量,也是从左往右赋值。上面的四种变体就是关于变量怎么匹配元素的事情了,头尾匹配,其他所有元素匹配,*head,tailhead,*tail正好相反,都是可以的,一个是除了最后一个元素,其他所有元素都要,下一个是除了第一个元素,其他所有元素都要,但是只有单个星号,无其他变量,直接会报错。