1.我想建一个二维列表,数据如下图所示:
0 | inf | inf | inf | inf | inf |
inf | 0 | inf | inf | inf | inf |
inf | inf | 0 | inf | inf | inf |
inf | inf | inf | 0 | inf | inf |
inf | inf | inf | inf | 0 | inf |
inf | inf | inf | inf | inf | 0 |
2.python代码如下:
n = 6
m = [[0] * n] * n
for i in range(n):
j = 0
while j < n:
print(str(i)+'\t'+str(j))
if i != j:
print('before\t'+str(m[0][0]))
m[i][j] = float('inf')
print('after\t'+str(m[0][0]))
j += 1
3.程序在执行第二次外部循环时(也就是i=1,j=0),本该执行m(1,0)=float('inf'),但
m(0)(0)的值却发生了改变。这是为什么?
0 5
before 0
after 0
1 0
before 0
after inf
1楼正解。虽然你的列表是6*6的,但是6行元素是通过复制引用得到的,相当于6个引用指向的同一个值,所以,改其中一个引用,六行都会发生变化。
更改后的代码如下: