更改列表元素

时间:2013-01-29 16:30:19

标签: python list

  

可能重复:
  Python List Index

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]]

谢谢!

2 个答案:

答案 0 :(得分:0)

执行[range(3)] * 2时,它会生成一个列表,其中包含两个对相同列表的引用,因此修改result[0]result[1]都会修改它们。< / p>

使用[range(3) for i in range(2)]制作一个列表,其中包含range(3)的两个不同结果。

答案 1 :(得分:0)

  • 列出“结果”为:[[0,1,2],[0,1,2]]
  • 你的迭代是:“for i in range(len(result))”
  • len(结果)是:2
  • 范围(2)是:[0,1]

含义:

第一次: 导致[0] [2] = 4 * 0

第二次: 导致[1] [2] = 4 * 1

给出结果[[0,1,4],[0,1,4]]

这就是一步一步做的事。

如果在迭代中添加“break”,则会看到结果为[[0,1,0],[0,1,0]]

“结果”列表以引用方式工作。当它被调用时,它指向同一个对象。