我希望输出像[[0,0,0,0,],[0,1,0,0],[0,2,0,0],[0,3,0,0]]

苦涩
time_count = [[0, 0, 0, 0]] * 4
j = 0
for i in range(len(time_count)):
    time_count[i][1] = j
    j += 1
print(time_count)

输出:

[[0, 3, 0, 0], [0, 3, 0, 0], [0, 3, 0, 0], [0, 3, 0, 0]]

我希望输出是这样的:

[[0,0,0,0],[0,1,0,0],[0,2,0,0],[0,3,0,0]] 

有人可以解释为什么index[1]都是3吗?

苦涩

基本上,列表的实体是指向特定内存位置的指针。当将列表(a)分配给列表(b)时,表示列表(b)指向与列表(a)相同的存储位置。

 a = [1, 2, 3]
 b = a
 a = [3, 4, 5]
 print(a, b)

 [3, 4, 5] [1, 2, 3]

在上述问题中,如果嵌套列表的内部乘以4倍,则所有子列表都指向相同的内存位置。因此,如果子列表之一被更改,则更改将传播到所有子列表,这基本上会在代码执行时产生意外结果。对于有兴趣了解更多信息的人,该视频总结了列表中不明显的所有基本功能。它还进一步详细解释了上述问题。https://www.youtube.com/watch?v=_AEJHKGk9ns

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章