防止在列表理解中除以零

Lew*_*ick 4 python list-comprehension divide-by-zero

我有以下代码:

scores = [matrix[i][i] / sum(matrix[i]) for (i, scores) in enumerate(matrix)]
Run Code Online (Sandbox Code Playgroud)

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

scores = [divide(matrix[i][i], sum(matrix[i])) for (i, scores) in enumerate(matrix)]
Run Code Online (Sandbox Code Playgroud)

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

Ter*_*ryA 6

是的,在python中它被称为条件表达式:

[matrix[i][i] / sum(matrix[i]) if sum(matrix[i]) != 0 else 0 
 for (i, scores) in enumerate(matrix)]
Run Code Online (Sandbox Code Playgroud)