Python多维列表初始化疑问:修改一子列表为何影响其他子列表?
问题原因与解决方法
为什么修改一个子列表会影响另一个?
当你用a = [[0,0,0]] * 2创建列表时,Python并没有生成两个独立的[0,0,0]子列表,而是把同一个子列表的引用复制了两次。也就是说,a[0]和a[1]指向的是内存里的同一个列表对象,所以修改a[0][2]时,本质是修改了那个唯一的子列表,a[1]作为引用自然也会显示变化。
而手动写a = [[0, 0, 0], [0, 0, 0]]时,你是显式创建了两个完全独立的子列表,它们在内存中是不同的对象,修改其中一个自然不会影响另一个。
正确创建86400条独立子列表的方法
要生成86400个独立的[Count, Angle, Speed]初始列表,用列表推导式是最稳妥的方式:
a = [[0, 0, 0] for _ in range(86400)]
这个写法会在每次循环中新建一个[0,0,0]子列表,确保每个子列表都是内存中的独立对象,修改任意一个都不会影响其他条目。
内容的提问来源于stack exchange,提问作者Peter_Brown_USA
相关产品推荐
相关产品推荐

