防止列表理解被零除 [英] Preventing dividing by zero in list comprehensions
本文介绍了防止列表理解被零除的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下代码:
scores = [matrix[i][i] / sum(matrix[i]) for (i, scores) in enumerate(matrix)]
我的问题是sum(matrix[i])
在某些情况下可能为0,从而导致ZeroDivisionError
.但是因为在这种情况下matrix[i][i]
也是0,所以我如下解决了这个问题:
My problem is that sum(matrix[i])
could be 0 in some cases, resulting in a ZeroDivisionError
. But because matrix[i][i]
is also 0 in that case, I solved this as follows:
scores = [divide(matrix[i][i], sum(matrix[i])) for (i, scores) in enumerate(matrix)]
如果y == 0
,函数divide(x, y)
返回1,如果y > 0
,则返回(x / y)
.但是我想知道是否有更简单的方法.也许我可以使用一些三元运算符,但是Python中存在吗?
The function divide(x, y)
returns 1 if y == 0
and (x / y)
if y > 0
. But I wonder if there is an easier way. Maybe I could use some ternary operator, but does that exist in Python?
推荐答案
是的,在Python中,它称为条件表达式:
Yes, in Python it's called the conditional expression:
[matrix[i][i] / sum(matrix[i]) if sum(matrix[i]) != 0 else 0
for (i, scores) in enumerate(matrix)]
这篇关于防止列表理解被零除的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文