变量的处理方式不同于值

问题描述 投票:0回答:1

我试图将字典添加到列表中,但我犯了使用 += 运算符的错误。发现错误后,我注意到如果我运行

a = []
a += {'b' : 2, 'c' : 3, 'd' : 4}
print(a)

我得到 ['b', 'c', 'd']。 如果我运行同样的东西,但我直接引用 [],我会得到一个错误。

SyntaxError: 'list' is an illegal expression for augmented assignment

我希望结果是一样的,但显然 x 的处理方式不同,即使它的值设置为 []。

python variables equation
1个回答
4
投票

如错误所述,

+=
是一个 增广赋值 运算符。左侧应该是一个变量名。你不能在左侧是像
[]
这样的文字表达式的地方使用它,就像你不能在文字上使用常规赋值运算符一样:

>>> [1, 2, 3] = [2, 3, 4]
  File "<stdin>", line 1
    [1, 2, 3] = [2, 3, 4]
     ^
SyntaxError: cannot assign to literal

您可能想要的是

extend
函数,它以与
+=
运算符几乎完全相同的方式改变列表,并且在像
[]
:

这样的文字上完全有效
>>> a = []
>>> a.extend({'b' : 2, 'c' : 3, 'd' : 4})
>>> a
['b', 'c', 'd']
>>> [].extend({'b' : 2, 'c' : 3, 'd' : 4})

但请注意,这是毫无意义的,因为扩展了匿名空列表后,您无法像访问

a
.

一样访问它
© www.soinside.com 2019 - 2024. All rights reserved.