我发现Python中的列表有一个奇怪的问题

我发现Python中的列表有一个奇怪的问题,python,Python,这是我的代码,我无法找出这两个列表的区别: cow = 1 column = 1 size = 3 board1=[[0,0,0],[0,0,0],[0,0,0]] print board1 board2=[[0] * size] * size print board2 if board1==board2: print 'same' board1[cow][column] =1 board2[1][2] =1 print "Board 1 is :", board1 print "Board

这是我的代码,我无法找出这两个列表的区别:

cow = 1
column = 1
size = 3
board1=[[0,0,0],[0,0,0],[0,0,0]]
print board1
board2=[[0] * size] * size
print board2

if board1==board2: print 'same'

board1[cow][column] =1
board2[1][2] =1
print "Board 1 is :", board1
print "Board 2 is :", board2
结果:

[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
same
Board 1 is : [[0, 0, 0], [0, 1, 0], [0, 0, 0]]
Board 2 is : [[0, 1, 0], [0, 1, 0], [0, 1, 0]]
生成内部列表并指向内存中的某个位置

外部列表是通过在一个列表中放置对内部列表的三个引用来创建的

对内部列表的更改会更改所有其他内部列表的内部列表,因为它们指向内存中的相同数据

要显示此列表,请在创建列表后放置此列表

print(
    board1[0] is board1[1],    #False
    board2[0] is board2[1],    #True
    )
如果两个对象都是内存中的同一对象,则is运算符返回true

生成内部列表并指向内存中的某个位置

外部列表是通过在一个列表中放置对内部列表的三个引用来创建的

对内部列表的更改会更改所有其他内部列表的内部列表,因为它们指向内存中的相同数据

要显示此列表,请在创建列表后放置此列表

print(
    board1[0] is board1[1],    #False
    board2[0] is board2[1],    #True
    )

如果两个对象都是内存中的同一对象,则is运算符返回true。

您不理解的具体区别是什么?如果您认为我的答案令人满意,请将其标记为已接受?干杯。你不明白的特殊区别是什么?如果你觉得我的答案令人满意,你能把它标记为接受吗?干杯