Python2D列表-更改元素后,不会更改打印输出
我用python创建了一个2d列表,并想更改一个元素。它工作得很好,但由于某些原因,使用两种不同的打印方式,我得到了两种不同的结果。通过打印整个数组,我得到了所需的零数组。通过显式打印出已更改的元素,我得到了不同的结果:Python2D列表-更改元素后,不会更改打印输出,python,Python,我用python创建了一个2d列表,并想更改一个元素。它工作得很好,但由于某些原因,使用两种不同的打印方式,我得到了两种不同的结果。通过打印整个数组,我得到了所需的零数组。通过显式打印出已更改的元素,我得到了不同的结果: 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("###
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数组。为什么会这样?我不太确定您是否正确打印,因为当您执行a4[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。您必须在发布的代码块之前的某个地方定义i。循环在索引i处显示行。在代码块之前将i设置为0,它将显示您要查找的内容。您所做的更改实际上没有问题。问题是您正在使用i编制索引,由于此行的原因,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]
我在哪里声明和修改? 我不知道你想怎么做,但下面的代码对我来说很好
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中的元素[i]->对于第行中的元素