Pythonでmax(list)
とmin(list)
を使用して、リストの最大値と最小値を見つけています。しかし、空のリストをどのように管理するのでしょうか。
たとえば、リストが空のリスト_[]
_である場合、プログラムは'ValueError: min() arg is an empty sequence'
を発生させますが、プログラムをクラッシュさせるのではなく、単に_'empty list or invalid input'
_を出力させる方法を知りたいです。これらのエラーを管理する方法は?
例外をキャッチして処理します。
try:
print(min(l), max(l))
except (ValueError, TypeError):
print('empty list or invalid input')
ValueError
は、空のシーケンスで発生します。シーケンスに順序付け不可能な型が含まれる場合、TypeError
が発生します。
Python 3.4では、default
キーワード引数がmin
およびmax
関数に追加されました。これにより、選択した値を関数が空のリスト(または別の反復可能なオブジェクト)で使用されている場合に返されます。例:
>>> min([], default='no elements')
'no elements'
>>> max((), default=999)
999
>>> max([1, 7, 3], default=999) # 999 is not returned unless iterable is empty
7
default
キーワードが指定されていない場合、代わりにValueError
が発生します。
以前のバージョンのPythonでデフォルトを指定する:
max(lst or [0])
max(lst or ['empty list'])