我的问题是关于以下 for 循环:
x=[[1,2,3],[4,5,6]]
for v in x:
v=[0,0,0]
这里如果你打印 x 你会得到 [[1,2,3],[4,5,6]].. 所以改变的 v 并不是对 x 中列表的真正引用。但是,当您执行以下操作时:
x=[[1,2,3],[4,5,6]]
for v in x:
v[0]=0; v[1]=0; v[2] =0
然后你得到 x 作为 [[0,0,0],[0,0,0]]。如果 x 中的列表很长,甚至做这样的事情,这就有点困难了:
x=[[1,2,3],[4,5,6]]
for v in x:
for i in v:
i = 0
将给我 x 作为 [[1,2,3],[4,5,6]]。我最好的选择是使用 for i in xrange(0,3): v[i]=0 ..虽然我仍然想知道这里发生了什么以及其他选择是什么时候我有列表列表或更多嵌套列表。
最佳答案
当python执行v = [0, 0, 0]
时,是
- 创建一个包含三个零的新列表对象。
- 将对新列表的引用分配给名为
v
的标签
v
之前是否引用其他内容并不重要。
如果你想改变当前被v
引用的列表的内容,那么你不能使用v =
语法。您必须像您提到的那样为其分配元素,或者使用 Sven 指出的切片符号 v[:] =
。
关于python - 引用python中的列表容器理解for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5917244/