无法创建给定大小的必需列表

时间:2020-05-31 05:48:09

标签: python python-3.x list nonetype

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]]

2 个答案:

答案 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]]
相关问题