为什么我不能这样做:
d = [x for x in range(7)]
a, b, c, d, e, f, g = *d
哪里可以打开包装? 只在函数的括号之间?
答案 0 :(得分:4)
你错误地使用了Extended Iterable Unpacking
。
d = [x for x in range(7)]
a, b, c, d, e, f, g = d
print(a, b, c, d, e, f, g)
哪里可以打开包装?只在函数的括号之间?
不,
*
建议更改可迭代解包语法,允许指定一个“catch-all”名称,该名称将被分配一个未分配给“常规”名称的所有项目的列表。
您可以尝试这样的事情:
a, *params = d
print(params)
输出
[1, 2, 3, 4, 5, 6]
当您需要将参数传递给函数时,通常会使用*
(扩展可迭代解包)运算符。
注意强>
相当于扩展的Iterable解包 operator
的Javascript称为spread syntax。
d = [...Array(7).keys()]
console.log(d)
var [a, ...b] = d
console.log(a,b)
答案 1 :(得分:2)
您也可以使用:
>>> a,b,c,d,e,f,g = range(7)
>>> a
0
>>> b
1
>>> c
2
答案 2 :(得分:1)
您似乎不需要*
>>> z = [x for x in range(7)]
>>> a,b,c,d,e,f,g = z
>>> a
0
>>> b
1
>>> c
2
>>>
(我使用了z而不是两次。)