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中的二维列表编辑的主要内容,如果未能解决你的问题,请参考以下文章

二维列表中的Python计数元素频率[重复]

python 二维FFT

通过python,将excel中的数据写入二维列表

将二维列表中的字符转换为int值python

如何将一列中的单词拆分然后在Python中将单词整合在一起,即二维列表到一维列表?

如何在python中创建二维列表