Pythonでは、リストの特定のインデックスにアクセスする際に、そのインデックスが存在しない場合にデフォルト値を返す方法があります。以下にその方法をいくつか紹介します。
例外処理を使用する方法
Pythonの「許可を求めるより謝罪をする」の精神に従って、以下のように例外処理を使用する方法があります。
try:
b = a[4]
except IndexError:
b = 'sss'
このコードでは、まずa[4]
を試みます。もしa[4]
が存在しない場合(つまり、インデックスが範囲外の場合)は、IndexError
が発生します。その場合、例外処理によりb
にデフォルト値'sss'
が代入されます。
条件分岐を使用する方法
例外処理を避けたい場合や、インデックスがリストの長さよりも小さいかどうかを事前に確認したい場合には、以下のように条件分岐を使用する方法があります。
b = a[4] if len(a) > 4 else 'sss'
このコードでは、まずlen(a) > 4
を評価します。もしa
の長さが4より大きい場合(つまり、インデックスが範囲内の場合)は、a[4]
がb
に代入されます。それ以外の場合(つまり、インデックスが範囲外の場合)は、'sss'
がb
に代入されます。
独自のリストクラスを作成する方法
Pythonでは、独自のリストクラスを作成し、その中にget
メソッドを定義することで、インデックスが範囲外の場合にデフォルト値を返すことができます。
class MyList(list):
def get(self, index, default=None):
return self[index] if -len(self) <= index < len(self) else default
l = MyList(['a', 'b', 'c'])
print(l.get(1)) # 'b'
print(l.get(9, 'no')) # 'no'
このコードでは、MyList
という新しいリストクラスを作成しています。このクラスにはget
メソッドが定義されており、このメソッドはインデックスとデフォルト値を引数に取ります。メソッド内部では、インデックスが範囲内にある場合には対応する要素を、範囲外の場合にはデフォルト値を返します。
以上のように、Pythonではリストのインデックスが範囲外の場合にデフォルト値を返す方法がいくつか存在します。これらの方法を適切に使い分けることで、Pythonでのプログラミングがより柔軟かつ効率的になります。