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)
这就是为什么左侧有多个值时表现不同的原因。
>>> 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)
这就是为什么左侧有多个值时表现不同的原因。