为什么解压缩`* a,b = something`会使`a`总是`list`类型?

时间:2019-07-02 03:39:43

标签: python list types unpack iterable-unpacking

我只是在测试拆包,

我意识到:

*a, b = {1, 2, 3}

a设为list,而不是set

使用它作为

[1, 2]

我尝试过:

*a, = {1, 2, 3}

期望set,但仍变为list,如下:

[1, 2, 3]

甚至有元组:

*a, = (1, 2, 3)

它与listset一样。

由于某种原因,这对我来说似乎不正确,我认为这是故意的。

1 个答案:

答案 0 :(得分:4)

  

讨论的可能变化是:

[...]

  

尝试为加星标的目标提供与可迭代源相同的类型,   例如,b中的a, *b = 'hello'将被分配字符串'ello'。   这看起来不错,但不可能始终如一地正确   所有可迭代项。

来源:https://www.python.org/dev/peps/pep-3132/