使用a = *b,
:
如果您这样做:
a = *[1, 2, 3],
它会给:
(1, 2, 3)
因为:
- 开箱和其他一些东西默认会给元组,但是如果你说
[*[1, 2, 3]]
输出:
[1, 2, 3]
作为一个list
,因为我做了list
,这样{*[1, 2, 3]}
会给一个set
。
- 拆包提供了三个要素,为此,
[1, 2, 3]
它确实可以
1, 2, 3
哪个输出:
(1, 2, 3)
这就是拆箱的工作。
主要部分:
拆包只需执行:
1, 2, 3
对于:
[1, 2, 3]
这是一个元组:
(1, 2, 3)
实际上,这将创建一个列表,并将其更改为元组。
使用*a, = b
:
好吧,这真的是:
a = [1, 2, 3]
由于不是:
*a, b = [1, 2, 3]
或类似的东西,这没有太多。
相当于没有 *
和,
,但不完整,它始终会列出一个列表。
实际上,这几乎仅用于多个变量,即:
*a, b = [1, 2, 3]
一件事是,无论它存储列表类型是什么:
>>> *a, = {1,2,3}
>>> a
[1, 2, 3]
>>> *a, = (1,2,3)
>>> a
[1, 2, 3]
>>>
还有一个奇怪的事情是:
a, *b = 'hello'
和:
print(b)
成为:
'ello'
然后,它似乎不像在喷溅。
还list
具有比其他功能更多的功能,更易于处理。
可能没有理由发生这种情况,这实际上是Python的决定。
该a = *b,
部分有一个原因,在“主要部分:”部分。
概要:
就像@Devesh在PEP 0448中提到的缺点:
尽管* elements,= iterable导致元素成为列表,而elements = * iterable,使元素成为元组。这样做的原因可能会使不熟悉该结构的人感到困惑。
(强调我的)
为什么要打扰,这对我们来说并不重要,如果想要列表,为什么不使用以下内容:
print([*a])
或元组:
print((*a))
和一套:
print({*a})
等等...