python中二维数组的初始化

python中二维数组的初始化,python,arrays,initialization,Python,Arrays,Initialization,昨天我问了一个关于初始化二维数组的问题,这是链接: 答案中有一个问题,一位朋友提到了一个方法: G = [[0]*11]*11 但是这样,当我把G[0][0]改为2时,所有的G[I][0]0,因为你有11个引用到同一个列表 G = [[0] * 11 for x in range(11)] 因为你对同一个列表有11个引用 G = [[0] * 11 for x in range(11)] *11表示法对同一对象进行了11次引用。如果对象是不可变的,您不会注意到,因为任何更改它的尝试都会更

昨天我问了一个关于初始化二维数组的问题,这是链接:

答案中有一个问题,一位朋友提到了一个方法:

G = [[0]*11]*11

但是这样,当我把G[0][0]改为2时,所有的G[I][0]0,因为你有11个引用到同一个列表

G = [[0] * 11 for x in range(11)]

因为你对同一个列表有11个引用

G = [[0] * 11 for x in range(11)]
*11表示法对同一对象进行了11次引用。如果对象是不可变的,您不会注意到,因为任何更改它的尝试都会更改对不同对象的引用。当对象是可变的时,您可以对其进行修改,例如指定给列表的成员;由于所有引用都指向同一个对象,因此所有引用都会同时被修改

可变/不可变似乎可以改变一些事情,但事实并非如此——Python在这两种情况下都是一致的。考虑这个例子:

G[0] = [3]*11
您将看到G[1]没有改变。

用*11表示法对同一对象进行了11次引用。如果对象是不可变的,您不会注意到,因为任何更改它的尝试都会更改对不同对象的引用。当对象是可变的时,您可以对其进行修改,例如指定给列表的成员;由于所有引用都指向同一个对象,因此所有引用都会同时被修改

可变/不可变似乎可以改变一些事情,但事实并非如此——Python在这两种情况下都是一致的。考虑这个例子:

G[0] = [3]*11

您将看到G[1]没有改变。

对不起,我不知道可变/不可变似乎会改变一些事情,但事实并非如此——Python在这两种情况下都是一致的,这意味着什么?为什么所有的引用都指向同一个对象,所有的引用都在同一时间被修改呢?我不知道,可变/不可变似乎会改变一些事情,但事实并非如此——Python在这两种情况下都是一致的,这意味着?为什么所有引用都指向同一个对象,所有引用都会同时被修改