Python 更改类列表矩阵的列表

Python 更改类列表矩阵的列表,python,arrays,list,Python,Arrays,List,嗨,我有一个函数,它接受4个参数,第一个是一个嵌套列表,它是一个矩阵,第二个是起始点ex:[1,0],第三个是停止点ex[2,0],最后一个参数改变起始点和停止点ex:-1之间的嵌套列表值。因此,它根据示例中的增量将[1,0]中的任何内容更改为[2,0]:[2:0]所有数字都减去1 现在,我创建了嵌套列表的新停止点和新开始点,并试图使循环只通过开始点和停止点,并在两者之间更改任何数字。例如将高程(三乘以三,[1,0],[1,1],-2)更新为[[1,2,1],[2,4,5],[7,8,9]],因

嗨,我有一个函数,它接受4个参数,第一个是一个嵌套列表,它是一个矩阵,第二个是起始点ex:[1,0],第三个是停止点ex[2,0],最后一个参数改变起始点和停止点ex:-1之间的嵌套列表值。因此,它根据示例中的增量将[1,0]中的任何内容更改为[2,0]:[2:0]所有数字都减去1

现在,我创建了嵌套列表的新停止点和新开始点,并试图使循环只通过开始点和停止点,并在两者之间更改任何数字。例如将高程(三乘以三,[1,0],[1,1],-2)更新为[[1,2,1],[2,4,5],[7,8,9]],因此在将增量添加到新列表时有点卡住了

范例

>>> THREE_BY_THREE_COPY = [[1, 2, 1],[4, 6, 5],[7, 8, 9]]
>>> update_elevation(THREE_BY_THREE_COPY, [1, 0], [1, 1], -2)
>>> THREE_BY_THREE_COPY
[[1, 2, 1], [2, 4, 5], [7, 8, 9]]

def update_elevation(elevation_map, start, stop, delta) -> None:

    new_start = elevation_map[start[0]][start[1]]
    new_stop = elevation_map[stop[0]][stop[1]]
    for num in range(new_start, new_stop):
        num += delta

对于数字内容,
numpy
通常是一种方式。我们可以使用
数组
轻松地在开始和停止之间建立索引,从而大大简化了代码:)

我建议不要使用列表列表来解决这类问题,因为数组通常更容易处理

编辑 没有numpy的解决方案:

def update_elevation(elevation_map, start, stop, delta):
    for xval in range(start[0], stop[0] + 1):
        for yval in range(start[1], stop[1] + 1):
            elevation_map[xval][yval] += delta
    return elevation_map

要仅使用循环,可以使用以下示例:

def update_elevation(elevation_map, start, stop, delta):

    for i in range(start[0], stop[0]+1):
        for j in range(start[1], stop[1]+1):
            elevation_map[i][j] += delta

当您有一个return语句时,为什么要使用类型注释来指示函数返回None?(也只是检查你的缩进)还有,为什么你今天至少问了3次同样的问题?对不起,我在这段代码上被困了一段时间后感到沮丧。不导入np就可以使用循环吗?我想对于我的代码,我已经达到了开始和停止部分的特定范围,但只是实现了列表中的增量,我一直坚持,给我一个sec@itachi123像这样的东西?是的!非常感谢。我被困在这上面好几天了!这是一道常见的数学题吗?
def update_elevation(elevation_map, start, stop, delta):

    for i in range(start[0], stop[0]+1):
        for j in range(start[1], stop[1]+1):
            elevation_map[i][j] += delta