【问题标题】:2D list editing in PythonPython中的二维列表编辑
【发布时间】: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

你能告诉我它有什么问题吗?

【问题讨论】:

  • 对不起,谢谢指出

标签: python arrays python-3.x list loops


【解决方案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
    
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      • 2021-07-25
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      • 2022-07-06
      相关资源
      最近更新 更多