Python 请解释*elements,=iterable结构
从PEP448: 当*elements、=iterable使元素成为列表时,元素= *iterable,使元素成为元组。其原因可能会使不熟悉该结构的人感到困惑 我就是那种人。我试了一下:Python 请解释*elements,=iterable结构,python,python-3.x,Python,Python 3.x,从PEP448: 当*elements、=iterable使元素成为列表时,元素= *iterable,使元素成为元组。其原因可能会使不熟悉该结构的人感到困惑 我就是那种人。我试了一下: >>> *e, = range(3) >>> e [0, 1, 2] >>> e = *range(3), >>> e (0, 1, 2) 前者适用于Python 3.4和3.5 后者仅在3.5中出现。这是上述PEP448引入的新功能。
>>> *e, = range(3)
>>> e
[0, 1, 2]
>>> e = *range(3),
>>> e
(0, 1, 2)
前者适用于Python 3.4和3.5
后者仅在3.5中出现。这是上述PEP448引入的新功能。在政治公众人物中有描述,没有问题
然而,我以前从未见过
*元素,=iterable
。您能解释一下它是如何工作的以及为什么创建一个列表吗?是的,这是一个新功能。好吧,之所以这样做是因为需要打开列表中的“其余部分”。因此,请看以下示例:
>>> a, *e = range(3)
>>> print(a, e)
0 [1, 2]
>>> a, *e, b = range(3)
>>> print(a, e, b)
0 [1] 2
现在请举一个例子:
>>> *e, = range(3)
>>> print(e)
[0, 1, 2]
相当于:
>>> (*e,) = range(3)
>>> print(e)
[0, 1, 2]
所以,逗号只是为了使它成为一个元素,可以使用(*e,)
。因此python知道范围(3)
的“其余部分”应该放入e
,在这种情况下,[0,1,2]
是一个完整的值
否则使用:
>>> *e = range(3)
File "<stdin>", line 1
SyntaxError: starred assignment target must be in a list or tuple
*e=范围(3)
文件“”,第1行
SyntaxError:带星号的分配目标必须位于列表或元组中
它不起作用
下面的解释。@AshwiniChaudhary完美的答案,谢谢。谢谢。您没有回答为什么它会创建一个列表,但是链接的PEP3132在规范部分中说明了它。我的主要问题是:
请解释*elements,=iterable构造
。我试着回答,给我一点时间。