我遇到了python的奇怪行为
情况1:-
arr=[[0]*2]*3
和
arr[0][0]=12
将arr设为[[12,0],[12,0],[12,0]]
情况2:-
arr=[[0, 0], [0, 0], [0, 0]]
和
arr[0][0]=12
将arr设为[[12,0],[0,0],[0,0]]
为什么这种行为?
答案 0 :(得分:0)
在看到您的问题之前,我无法告诉您这一点,但是代码如下:
arr=[[0]*2]*3
显然是在创建列表[0,0],然后创建一个外部列表,其中包含对该同一内部列表的3个引用。因此,当您设置arr [0,0]时,将设置被引用三次的那个内部列表的第一个元素。
另一方面,您的第二个示例将生成一个包含三个唯一内部列表的外部列表。