我有以下代码:
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)
如果y == 0
则返回1和(x / y)
如果y > 0
。但我想知道是否有更简单的方法。也许我可以使用一些三元运算符,但这在 Python 中存在吗?
最佳答案
是的,在Python中它被称为conditional expression :
[matrix[i][i] / sum(matrix[i]) if sum(matrix[i]) != 0 else 0
for (i, scores) in enumerate(matrix)]
关于python - 防止列表推导式中除以零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17235536/