Python中的二维列表编辑
Posted
技术标签:
【中文标题】Python中的二维列表编辑【英文标题】:2D list editing in Python 【发布时间】:2021-03-30 11:30:46 【问题描述】:我正在尝试在 Python 中编辑一个 5 * 5 方阵。我用值 0 初始化这个 5 * 5 矩阵中的每个元素。我使用以下代码使用列表初始化矩阵:
h = []
for i in range(5):
h.append([0,0,0,0,0])
现在我想把矩阵改成这样。
4 5 0 0 0
0 4 5 0 0
0 0 4 5 0
0 0 0 4 5
5 0 0 0 4
这是一段代码-
i = 0
a = 0
while i < 5:
h[i][a] = 4
h[i][a+1] = 5
a += 1
i += 1
其中 h[i][j] 是二维矩阵。但是输出总是显示这样的 -
4 4 4 4 4
4 4 4 4 4
4 4 4 4 4
4 4 4 4 4
4 4 4 4 4
你能告诉我它有什么问题吗?
【问题讨论】:
对不起,谢谢指出 【参考方案1】:使用模运算符%
进行如下更新:
for i in range(5):
h[i][i % 5] = 4
h[i][(i+1) % 5] = 5
第一行中的% 5
不是绝对必要的,但强调了各种维度矩阵的一般原则。或者更一般地说,对于随机尺寸:
for i, row in enumerate(h):
n = len(row)
row[i % n] = 4
row[(i+1) % n] = 5
【讨论】:
【参考方案2】:在这里回答问题:2D list has weird behavor when trying to modify a single value
这应该可行:
#m = [[0]*5]*5 # Don't do this.
m = []
for i in range(5):
m.append([0]*5)
i = a = 0
while i < 5:
m[i][a] = 4
if a < 4:
m[i][a+1] = 5
a += 1
i += 1
【讨论】:
以上是关于Python中的二维列表编辑的主要内容,如果未能解决你的问题,请参考以下文章