我该怎么解压序列?

时间:2018-05-02 09:22:04

标签: python expression

为什么我不能这样做:

d = [x for x in range(7)] 
a, b, c, d, e, f, g = *d

哪里可以打开包装? 只在函数的括号之间?

3 个答案:

答案 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而不是两次。)