我有一个这样的清单
a = [ [ 1,2,3 ], [ 4,5,6] ]
如果我写
for x in a:
do something with x
第一个列表是从a
复制到的x
吗?或者 python 是否使用迭代器来执行此操作而无需进行任何额外的复制?
我有一个这样的清单
a = [ [ 1,2,3 ], [ 4,5,6] ]
如果我写
for x in a:
do something with x
第一个列表是从a
复制到的x
吗?或者 python 是否使用迭代器来执行此操作而无需进行任何额外的复制?
Python 不会将项目从 a 复制到 x 中。它只是将 a 的第一个元素称为 x。这意味着:当你修改 x 时,你也修改了 a 的元素。
这是一个例子:
>>> a = [ [ 1,2,3 ], [ 4,5,6] ]
>>> for x in a:
... x.append(5)
...
>>> a
[[1, 2, 3, 5], [4, 5, 6, 5]]
First, those are mutable lists [1, 2, 3]
, not immutable tuples (1, 2, 3)
.
Second, the answer is that they are not copied but passed by reference. So with the case of the mutable lists, if you change a value of x
in your example, a
will be modified as well.
执行以下for element in aList:
操作:它创建一个名为的标签,该标签element
引用列表的第一项,然后是第二个……直到它到达最后一项。它不会复制列表中的项目。
写作x.append(5)
会修改项目。写入x = [4, 5, 6]
只会将x
标签重新绑定到新对象,因此不会影响a
.