链表结构中的元组解包(python3)

2024-06-02 00:21:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我喜欢在作业中使用右侧的元组解包:

>>> a = [3,4]

>>> b = [1,2,*a]
  File "<stdin>", line 1
SyntaxError: can use starred expression only as assignment target

当然,我可以:

^{pr2}$

但我觉得这很麻烦。我误解了一点吗?一个简单的方法? 有计划有这个吗?或者,有没有理由明确不在语言中使用它?在

问题的一部分是,所有容器类型都使用一个构造函数,该构造函数需要iterable而不接受*args参数。我可以子类化,但这会给其他人应该阅读的脚本引入一些非python噪音。在


Tags: onlytargetuseasstdin作业linecan
3条回答

您可以使用add运算符:

a = [3, 4]
b = [1, 2] + a

您有几个选项,但最好的选择是使用列表连接(+):

b = [1,2] + a

如果您真的想使用*语法,可以创建自己的列表包装:

^{pr2}$

你可以称之为:

a = 3,4
b = my_list(1,2,*a)

我想这里的好处是a不需要是列表,它可以是任何序列类型。在

PEP 448中所述,Python3.5中已修复此问题:

>>> a=[3,4]
>>> b=[1,2,*a]
>>> b
[1, 2, 3, 4]

相关问题 更多 >