Pythonのリスト内包表記は、既存のリストや他のイテラブルから新しいリストを作成するために使用されます。しかし、リスト内包表記で例外が発生した場合、Pythonにはそれを処理する特別な組み込みメソッドはありません。この記事では、リスト内包表記で発生する例外を処理する方法について説明します。

事前定義された例外の処理

ZeroDivisionErrorの処理

2つのリスト(list1、list2)があり、それぞれに整数が含まれているとします。これらのリストの要素を除算して新しいリスト(list3)を作成する必要があります。しかし、0で除算するとエラーが発生します。この例外をキャッチしてエラーメッセージを表示するには、以下のようなユーティリティ関数を作成します。

list1 = [2, 6, 41, 1, 58, 33, -7, 90]
list2 = [1, 3, 2, 0, 6, 3, 7, 0]

def util_func (a, b):
    try:
        return round(a/b, 3)
    except ZeroDivisionError as e:
        print("Division by zero not permitted!!!")

list3 = [util_func (x, y) for x, y in zip(list1, list2)]
print(list3)

ValueErrorの処理

整数、文字列形式の整数、単語が混在したリストがあるとします。このリストから数値だけを取り出して新しいリストを作成する必要があります。しかし、文字列の値は無視してエラーメッセージを表示しないようにしたいとします。

li = ['10', '11', 7, 'abc', 'cats', 3, '5']

def util_func (a):
    try:
        return int(a)*int(a)
    except ValueError:
        pass

new_li = [util_func (x) for x in li]
print(new_li)

ユーザー定義の例外処理

ユーザー定義の例外は、値が指定された範囲内にあるべきである、値がある数で割り切れるべきである、など、任意の条件を設定することができます。

以上がPythonのリスト内包表記での例外処理についての基本的な説明です。これらのテクニックを使って、より堅牢なコードを書くことができます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です