防止列表理解被零除

发布于 2021-01-29 16:33:28

我有以下代码:

scores = [matrix[i][i] / sum(matrix[i]) for (i, scores) in enumerate(matrix)]

我的问题是sum(matrix[i])在某些情况下可能为0,从而导致ZeroDivisionError。但是因为matrix[i][i]在这种情况下也是0,所以我如下解决了这个问题:

scores = [divide(matrix[i][i], sum(matrix[i])) for (i, scores) in enumerate(matrix)]

该函数divide(x, y)返回1y == 0(x / y)如果y > 0。但我想知道是否有更简单的方法。也许我可以使用一些三元运算符,但这在Python中存在吗?

关注者
0
被浏览
47
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    是的,在Python中称为条件表达式

    [matrix[i][i] / sum(matrix[i]) if sum(matrix[i]) != 0 else 0 
     for (i, scores) in enumerate(matrix)]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看