更改列表元素

2024-04-23 15:36:55 发布

您现在位置:Python中文网/ 问答频道 /正文

Possible Duplicate:
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]]

谢谢你!你知道吗


Tags: inforindexlenrangeresultlistprint
2条回答
  • 列表“结果”为:[[0,1,2],[0,1,2]]
  • 您的迭代是:“对于范围内的i(len(result))”
  • 长度(结果)为: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]]

“结果”列表通过引用工作。当它被调用时,它指向同一个对象。你知道吗

当您执行[range(3)] * 2时,它会生成一个包含两个对的引用的列表,其中包含相同的列表,因此修改result[0]result[1]会同时修改这两个列表。你知道吗

使用[range(3) for i in range(2)]创建一个包含range(3)两个不同结果的列表。你知道吗

相关问题 更多 >