持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第9天,点击查看活动详情
0 环境
- 编辑器:idea或vscode
- 系统版本:windows10
- python版本:3.9.6
1 前言
下面几个变体,更多关注是变量数量是否大于总元素个数,多星号,无星号的问题。
2 第五种
等号左边有两个或两个以上的*时,会报错,所以是不不行。
3 第六种
等号左边多个变量,包裹一个*xx变量,可行的。
lists = list(range(8))
head, second, third, *m, tail = lists
print("head: ", head)
print("second: ", second)
print("third: ", third)
print("m: ", m)
print("tail: ", tail)
4 第七种
当等号左边的变量总数高于右边len(列表)的长度时,会报错,所以不允许这么用。
5 第八种
当等号左边的变量总数低于右边len(列表)的长度时,等号左边变量中没有定义*xx变量,也会报错。
6 忽略点
比如我解构,head,*mid,tail,但是我的列表里只有2个元素,会有报错?星号的含义,为啥不可以只有它单独存在或者多个存在
列表里有两个元素,但是我有三个变量,先把值分给head和tail,没有带星号的变量内容就为空列表了。
当变量只有一个星号的情况下,比如*head = lists
,按照我们的想法就是直接赋给它,但反过来想想,那我直接赋值或者用copy或者深拷贝,没必要在解构了呀,多此一举不是。当出现多个星号为啥不行,head,*mid,*mid1
,星号解构剩余变量,但是现在两个星号,它们直接怎么分配列表个数呢,python怎么判断处理呢。