a=[[None]*3]
a=a*3
k=0
for i in range(3):
for j in range(3):
a[i][j]=k
print(a)
k=k+1
print(a)
我希望输出为[[0,1,2],[3,4,5],[6,7,8]。我得到什么 是[[6,7,8],[6,7,8],[6,7,8]]
答案 0 :(得分:1)
错误是变量的引用更改,会影响每个列表元素。 使用以下方法。
n,m = 3, 3
a = [[0] * m for i in range(n)]
k=0
for i in range(3):
for j in range(3):
a[i][j]=k
k=k+1
print(a)
答案 1 :(得分:0)
您需要复制a
中的每个列表,因为当使用多个列表时,它会创建每个引用相同列表的列表的副本,这样,您将获得3个相同的列表,但其中只有最后一个迭代值
a=[[],[],[]]
a=[a[:], a[:], a[:]]
k=0
for i in range(3):
for j in range(3):
a[i][j]=k
k+=1
print(a)
输出
[[0, 1, 2], [3, 4, 5], [6, 7, 8]]