不明白为什么拆包无法按预期进行

时间:2019-03-24 09:57:15

标签: python python-3.x unpack

Python解压缩不起作用

a = [1,2,3,4]
*m = a; //error

b,*m = a
print(m) //working

请解释为什么前一个不起作用。

1 个答案:

答案 0 :(得分:4)

每个PEP-3132(引入了这种“扩展的可迭代拆包” 语法)和language reference(已加星标的目标)仅在目标为一个可迭代的。

  

使用加星号的表达式作为单独的任务也是错误的   目标,如

*a = range(5)
     

但是,这是有效的语法:

*a, = range(5)

因此,要使其在语法上有效,您可以这样做:

*m, = a

甚至:

[*m] = a

但是请注意,创建列表的浅表副本的惯用方式是使用切片:

m = a[:]