Python [[]]*4和[[]、[]、[]、[]、[]之间有什么区别
我创建了两个看起来相同的列表Python [[]]*4和[[]、[]、[]、[]、[]之间有什么区别,python,Python,我创建了两个看起来相同的列表 x = [[]]*4 y = [[],[],[],[]] 因为当我打印x,y时,它们给我相同的输出。但是,当我对它们应用相同的操作x[0].append((1,2)),y[0].append((1,2))时,它们会给出不同的结果 print x >> [[(1, 2)], [(1, 2)], [(1, 2)], [(1, 2)]] print y >> [[(1, 2)], [], [], []] 为什么会发生这种情况?如何修改x,以
x = [[]]*4
y = [[],[],[],[]]
因为当我打印x,y时,它们给我相同的输出。但是,当我对它们应用相同的操作x[0].append((1,2)),y[0].append((1,2))
时,它们会给出不同的结果
print x >> [[(1, 2)], [(1, 2)], [(1, 2)], [(1, 2)]]
print y >> [[(1, 2)], [], [], []]
为什么会发生这种情况?如何修改
x
,以确保x
和y
完全相同?x
是一个引用相同列表4倍的列表
y
是由4个独立的空列表组成的列表。x
是引用同一列表4次的列表
y
是由4个独立的空列表组成的列表。x
是引用同一列表4次的列表
y
是由4个独立的空列表组成的列表。x
是引用同一列表4次的列表
y
是由4个独立的空列表组成的列表。简短回答:[[]]创建对同一列表的4个引用。请参阅Michael0x2a的链接以获得更详细的答案。另请参阅范围(4)中的x的[]!这就解决了问题。谢谢!简短回答:[[]]创建对同一列表的4个引用。请参阅Michael0x2a的链接以获得更详细的答案。另请参阅范围(4)中的x的[]!这就解决了问题。谢谢!简短回答:[[]]创建对同一列表的4个引用。请参阅Michael0x2a的链接以获得更详细的答案。另请参阅范围(4)中的x的[]!这就解决了问题。谢谢!简短回答:[[]]创建对同一列表的4个引用。请参阅Michael0x2a的链接以获得更详细的答案。另请参阅范围(4)中的x的[]!这就解决了问题。谢谢!