0

本质上,我的代码精炼了一个数组。如果下一位数据太远,它会搜索上方和下方索引以查看该数据是否更适合在其索引中,即

def distance(x, y):
    if x > y:
        result = x - y
    else:
        result = y - x
    return result


for y in range(0,10):
    for x in range(0,10):
        newarray[y][0] = myarray[y][0]
        if distance(myarray[y][x],myarray[y][x+1]) > myerror:
            if distance(myarray[y-1][x+1],newarrayarray[y][x]) <= myerror:
                newarray[y][x+1] = myarray[y-1][x+1]
            elif distance(myarray[y-2][x+1],newarrayarray[y][x]) <= myerror:
                newarray[y][x+1] = myarray[y-2][x+1]
            elif distance(myarray[y+1][x+1],newarrayarray[y][x]) <= myerror:
                newarray[y][x+1] = myarray[y+1][x+1]
            elif distance(myarray[y+2][x+1],newarrayarray[y][x]) <= myerror:
                newarray[y][x+1] = myarray[y+2][x+1]
            else:
                newarray[y][x+1] = myarray[y][x+1]
        else:
            newarray[y][x+1] = myarray[y][x+1]

所以这段代码对于 y 的特定值非常有效,更具体地说是数组的中间值。我遇到的问题是外部值,因为显然对于 y=10 没有 y+1 值。

我想要发生的是,如果它超出了索引范围,我希望它只是将其视为不符合我的设定条件,而不是将其视为错误。因此,当 y=10 时,当它寻找 y=11 而不是因为它不存在而发出嘶嘶声时,我希望它只是说不,这不是真的,继续下一个 if。

我希望这是有道理的,如果没有,请发表评论,我会尝试清除它。

4

1 回答 1

0

您想要的是,在每个 if 中进行距离计算之前,检查您要测试的相邻 x 或 y 值是否在范围内,并在其与距离检查之间进行逻辑和。由于它使用惰性求值,如果第一个条件失败,它将永远不会求值第二个条件,并且您将永远不会出错。

于 2012-11-29T17:15:36.247 回答