相关疑难解决方法(0)

如何在Python中处理列表解析中的异常?

我在Python中有一些列表理解,其中每次迭代都会抛出异常.

例如,如果我有:

eggs = (1,3,0,3,2)

[1/egg for egg in eggs]
Run Code Online (Sandbox Code Playgroud)

我会ZeroDivisionError在第3个元素中得到一个例外.

如何处理此异常并继续执行列表推导?

我能想到的唯一方法是使用辅助函数:

def spam(egg):
    try:
        return 1/egg
    except ZeroDivisionError:
        # handle division by zero error
        # leave empty for now
        pass
Run Code Online (Sandbox Code Playgroud)

但这对我来说看起来有点麻烦.

有没有更好的方法在Python中执行此操作?

注意: 这是我设计的一个简单示例(参见上面的" 例如 "),因为我的真实示例需要一些上下文.我不想避免除零错误,而是处理列表理解中的异常.

python list-comprehension exception

99
推荐指数
6
解决办法
4万
查看次数

防止在列表理解中除以零

我有以下代码:

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中是否存在?

python list-comprehension divide-by-zero

4
推荐指数
1
解决办法
714
查看次数