返回列表中的最低点

时间:2018-11-11 03:25:56

标签: python python-3.x

def find_local_sink(m: List[List[int]], start: List[int]) -> List[int]:
    """
    Examples 
    >>> m = [[ 5,70,71,80],
             [50, 4,30,90],
             [60, 3,35,95],
             [10,72, 2, 1]]
    >>> find_local_sink(m, [0,0])
    [3,3]
    >>> m = [[ 5,70,71,80],
             [50, 4, 5,90],
             [60, 3,35, 2],
             [ 1,72, 6, 3]]
    >>> find_local_sink(m, [0,3])
    [2,3]
    >>> m = [[9,2,3],
             [6,1,7],
             [5,4,8]]
    >>> find_local_sink(m, [1,1])
    [1,1]
    """
    lowest_point = m[0][0]
    for i in range(len(m)):
        for j in range(len(m)):
            if m[i][j] < lowest_point:
                lowest_point = m[i][j]
                print(lowest_point)
    return find_local_sink

给出一个列表或点。我想返回下一个最低点。我试图弄清楚该怎么做。大量的文档字符串都是测试用例,用于显示所需的预期结果。问题是它不会返回下一个最小的项目,而是返回整体最小的项目。所有它不返回索引,而是仅返回值

1 个答案:

答案 0 :(得分:0)

您的代码未使用start参数,这就是为什么它会打印总体最小值。更改for循环中的范围,以使用start的元素作为起始值。 此外,如果需要该值,该函数应返回lowest_point;如果您需要索引,请使用一个额外的变量来跟踪它们:

def find_local_sink(m, start):
    lowest_point = m[start[0]][start[1]]
    lowest_index = [[start[0], start[1]]
    for i in range(start[0], len(m)):
        for j in range(start[1], len(m)):
            if m[i][j] < lowest_point:
                lowest_point = m[i][j]
                lowest_index = [i, j]
    return lowest_index # or: return lowest_point