Python中解包列表的概念--语法规则冲突

Concept of unpacking a list in Python-- conflicting rules of syntax

>>> x = [1,3]
>>> x
[1, 3]
>>> x[0]
1
>>> x[1]
3
>>> x,y = [1,3]
>>> x
1
>>> y
3
>>> x[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not subscriptable

据我了解,列表本身就是一个值。因此,它可以分配给一个变量。

这在上面的代码中很明显,其中 x = [1,3] 和 x returns [1,3] 的列表值。但是,如果赋值运算符的左边有两个变量,情况就不同了。变量右侧的 list 不再是值,而是列表的 elements 是值。

谁能解释一下为什么会这样。提前致谢。

也许我误解了 "unpacking" 是什么。当赋值运算符左边有多个变量时规则会改变吗?

这是一个简单的作业:

x = [1, 3]

这是开箱:

x, y = [1, 3]

也许这就是您想要的:

x = y = [1, 3]
x[0] # 1

说明

观察到 x, y 实际上是方便 (x, y):

(x, y) = [1, 3]

x = 1, 3
x # (1, 3)

这就是为什么左侧有多个值时表现不同的原因。