Как обработать исключения в списке понимания?

У меня есть некоторые понимание списка в Python, в котором каждое повторение может выдать исключение.

Например, если я имею:

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

[1/egg for egg in eggs]

Я получу a ZeroDivisionError исключение в 3-м элементе.

Как я могу обработать это исключение и продолжить выполнение понимания списка?

Единственным путем я могу думать, должен использовать функцию помощника:

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

Но это выглядит немного громоздким мне.

Существует ли лучший способ сделать это в Python?

Примечание: Это - простой пример (см., "например", выше), что я изобрел, потому что мой реальный пример требует некоторого контекста. Я не интересуюсь предотвращением, делятся на нулевые ошибки, но в обрабатывании исключений в понимании списка.

97
задан martineau 27 June 2019 в 23:35
поделиться

1 ответ

Я не видел, что любой ответ упомянул это. Но этим примером был бы один способ препятствовать тому, чтобы исключение было повышено для известных провальных случаев.

eggs = (1,3,0,3,2)
[1/egg if egg > 0 else None for egg in eggs]


Output: [1, 0, None, 0, 0]
0
ответ дан 24 November 2019 в 05:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: