为了账号安全,请及时绑定邮箱和手机立即绑定

矩阵外的函数输入

矩阵外的函数输入

饮歌长啸 2021-08-17 18:35:05
我正在编写一个带有参数d和e. 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]]and e = [3,0],它应该返回False而不是引发index out of range错误。我如何做到这一点?
查看完整描述

2 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

您应该能够按如下方式捕获错误:


mainIndex = e[0]

secondIndex = e[1]

try:

    position = d[row][column]

except IndexError:

    return False


查看完整回答
反对 回复 2021-08-17
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

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),这两种解决方案都适用于任意维度。


查看完整回答
反对 回复 2021-08-17
  • 2 回答
  • 0 关注
  • 139 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号