Python

リスト内包表記の中で,例外を処理する

リスト内包表記の中で,例外を処理する

やりたいこと

リスト内包表記( map 関数の場合も同様)で処理しながら,例外は握りつぶしたい。

やったこと

# リストの要素に適用したい関数
def test_func(x):
    if x < 0:
        raise AttributeError()
    else:
        return x

# 例外を握りつぶす関数
def ignore_error(func, *args):
    try:
        return func.__call__(*args)
    except:
        return None

# 例外を握りつぶさない
[test_func(x) for x in range(-5, 5)]
> AttributeError

# 例外を握りつぶす
[ignore_error(test_func, x) for x in range(-5, 5)]
> [None, None, None, None, None, 0, 1, 2, 3, 4]

コメントを残す