相关疑难解决方法(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万
查看次数

Python - 使用try/exception和嵌套条件列表理解

此代码应在O(n)线性时间内找到列表的模式.我想把它变成一个列表理解,因为我在教自己Python,并且我正在努力提高我的列表理解能力.
这些都是提供信息,但没有真正回答我的问题:

将嵌套循环和条件转换为列表推导

列表理解条件中的`elif`

嵌套列表理解等效

我遇到的问题是嵌套if和try/except.我确信这是一个简单的问题,所以初级Python程序员可能很快得到答案.

def mode(L):
    # your code here
    d = {}; mode = 0; freq = 0
    for j in L:
        try:
            d[j] += 1
            if d[j] > freq:
                mode = j; freq = d[j]
        except(KeyError): d[j] = 1
    return mode
Run Code Online (Sandbox Code Playgroud)

请注意,L参数是这样的int列表:

L = [3,4,1,20,102,3,5,67,39,10,1,4,34,1,6,107,99]
Run Code Online (Sandbox Code Playgroud)

我想的是:

[try (d[j] += 1) if d[j] > freq (mode = j; freq = d[j]) except(KeyError): d[j] = 1 for j in L]
Run Code Online (Sandbox Code Playgroud)

但我没有足够的胶带来修复语法错误的程度.

python list-comprehension try-catch conditional-statements python-2.7

0
推荐指数
1
解决办法
1610
查看次数