可能重复:
Python 列表索引
result=[range(3)]*2
for i in range(len(result)):
result[i][2]=4*i
print result
我希望[[0, 1, 0], [0, 1, 4]]
为什么我会得到[[0, 1, 4], [0, 1, 4]]
谢谢!
可能重复:
Python 列表索引
result=[range(3)]*2
for i in range(len(result)):
result[i][2]=4*i
print result
我希望[[0, 1, 0], [0, 1, 4]]
为什么我会得到[[0, 1, 4], [0, 1, 4]]
谢谢!
意义:
第一次:结果[0][2]=4*0
第二次:结果[1][2]=4*1
这会给你结果 [[0, 1, 4], [0, 1, 4]]
这就是一步一步做的事情。
如果您在迭代中添加“中断”,您会看到结果是 [[0, 1, 0], [0, 1, 0]]
“结果”列表通过参考起作用。当它被调用时,它指向同一个对象。
当您这样做时[range(3)] * 2
,它会创建一个列表,其中包含对同一列表的两个引用,因此修改result[0]
和result[1]
每个都修改两者。
用于[range(3) for i in range(2)]
制作一个包含两个不同结果的列表range(3)
。