初始化一个三行三列的矩阵
csharp
m = n = 3
初始化方式1
csharp
a = [[0 for i in range(m)] for j in range(n)]
初始化方式2
csharp
b = []
row = [0 for i in range(0,m)]
for i in range(0,n):
b.append(row)
分别输出两个初始化的结果
csharp
for row in a:
print(row)
for row in b:
print(row)
当前的输出为:

当我修改[0,0]位置的数值的时候,奇怪事情发生了,两种初始化方式的不同导致结果的不同:
csharp
a[0][0] = 1
b[0][0] = 1
for row in a:
print(row)
print()
for row in b:
print(row)

a数组是正常的输出,但是b数组的整列的值都发生了改变,很奇怪。
我再尝试修改其他位置的值,得到类似的结果:
csharp
a[0][1] = 1
b[0][1] = 1
for row in a:
print(row)
print()
for row in b:
print(row)

csharp
a[1][2] = 1
b[1][2] = 1
for row in a:
print(row)
print()
for row in b:
print(row)
很奇怪!!!