矩阵外的函数输入

时间:2018-11-14 16:36:37

标签: python arrays list numpy matrix

我正在写一个带有参数de的函数。 d代表用户输入的矩阵,e代表矩阵中的起始位置。我能够将e定义为矩阵d的位置:

mainIndex = e[0]
secondIndex = e[1]
position = d[row][column]

我面临一个挑战,即如果用户在用户输入的矩阵之外输入位置,则返回False;例如,如果矩阵d = [[3,2,1],[6,5,4],[9,8,7]]e = [3,0],它应该返回False而不是引发index out of range错误。我该如何实现?

2 个答案:

答案 0 :(得分:1)

您应该能够按如下所示捕获错误:

service1/
    Dockerfile
    manage.py
    settings.py
    ..
service2/
    Dockerfile
    manage.py
    settings.py
    ..
databasemodel/
    Dockerfile
    manage.py
    settings.py
    database/
        models.py

来源:I want to exception handle 'list index out of range.'

答案 1 :(得分:1)

try / except

您可以编写函数并捕获IndexError。我还建议您不要链接索引器,而应使用arr[row, column]语法。例如:

d = np.array([[3,2,1],[6,5,4],[9,8,7]])

def get_val(A, idx):
    try:
        return A[tuple(idx)]
    except IndexError:
        return False

e = [3, 0]
f = [0, 2]

get_val(d, e)  # False
get_val(d, f)  # 1

if / else

可以通过if / else构造一种替代的,更明确的解决方案:

def get_val(A, idx):
    if all(i < j for i, j in zip(idx, A.shape)):
        return A[tuple(idx)]
    return False

由于我们使用tuple(idx),所以两种解决方案都适用于任意尺寸。