Python 2d列表-更改元素后,打印输出不变

时间:2018-11-05 17:41:09

标签: python

我在python中创建了一个二维列表,并希望更改一个元素。它工作正常,但是由于某种原因,使用两种不同的打印方式,我得到两种不同的结果。通过打印出整个数组,我可以得到一个零数组。通过显式打印出已更改的元素,我得到了不同的结果:

m = 4
n = 3

a4 = [[0]*m for i in range(n)]

for row in a4:
    for element in row:
        print(element, end=" ")
    print()

print("####")
a4[0][0] = 1
print(a4[0][0])

for row in a4:
    for element in row:
        print(element, end=" ")
    print()

尽管在一个中间步骤中a4 [0] [0]更改为1,但是两个循环都在打印带有零的3x4数组。为什么会这样?

4 个答案:

答案 0 :(得分:1)

在哪里声明和修改了“ i”? 我不知道您想怎么做,但是下面的代码对我来说很好。

m = 4
n = 3

a4 = [[0]*m for i in range(n)]

for row in a4:
    for element in row:
        print(element, end=" ")
    print()

print("####")
a4[0][0] = 1
print(a4[0][0])

for row in a4:
    for element in row:
        print(element, end=" ")
    print()

答案 1 :(得分:0)

我不太确定您是否正确打印,因为在进行a4[i]时,i应该未定义。转到:

m = 4
n = 3

a4 = [[0] * m for i in range(n)]

for zeile in a4:
    for element in zeile:
        print(element, end=" ")
    print()

print("####")
a4[0][0] = 1
print(a4[0][0])
print("####")

for zeile in a4:
    for element in zeile:
        print(element, end=" ")
    print()

输出:

0 0 0 0 
0 0 0 0 
0 0 0 0 
####
1
####
1 0 0 0 
0 0 0 0 
0 0 0 0 

根据需要将第一个元素更改为1。

答案 2 :(得分:0)

您必须在发布的代码块之前的某处定义i。循环将在i的索引处显示行。在代码块之前,将i设置为0,它会显示您要查找的内容。

答案 3 :(得分:0)

您的更改实际上很好。问题是,由于此行,您正在按i进行索引,该索引设置为n-1:

a4 = [[0] * m for i in range(n)]

如果这样打印,您会发现更改实际上是可以的:

for row in a4:
    print row

print("####")
a4[0][0] = 1
print(a4[0][0])

for row in a4:
    print row

输出:

[0, 0, 0, 0]
[0, 0, 0, 0]
[0, 0, 0, 0]
####
1
[1, 0, 0, 0]
[0, 0, 0, 0]
[0, 0, 0, 0]