我在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数组。为什么会这样?
答案 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]