改变像矩阵列表的列表

嗨,所以我有一个函数,它接受4个参数,第一个是作为矩阵的嵌套列表,第二个是作为起点ex的:[1,0],第三个是终点ex [2,0],最后一个参数,用于在起点和终点ex:-1之间更改嵌套列表的值。因此,它在示例-1中基于增量将值从[1,0]更改为[2,0]。因此,从[1,0]:[2:0]的所有数字都减去1

因此,到目前为止,我创建了嵌套列表的新的停止点和新的开始点,并且我试图使其变为仅循环通过开始点和停止点并在其之间更改任何数字。例如update_elevation(THREE_BY_THREE,[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],-2)
>>> THREE_BY_THREE_COPY
[[1,[2,4,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
xiaoyr062285 回答:改变像矩阵列表的列表

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

import numpy as np

def update_elevation(elevation_map,start,stop,delta):
    elevation_map = np.array(elevation_map)
    elevation_map[start[0]:stop[0] + 1,start[1]:stop[1] + 1] += delta
    return elevation_map


THREE_BY_THREE_COPY = [[1,2,1],[4,6,5],[7,8,9]]

print(update_elevation(THREE_BY_THREE_COPY,[1,0],-2))

我建议不要针对此类问题使用列表列表,因为数组通常更易于使用。

修改 没有numpy的解决方案:

def update_elevation(elevation_map,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
,

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

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
本文链接:https://www.f2er.com/3164011.html

大家都在问