web-dev-qa-db-ja.com

リストの最大/最小値を見つけるときに空のリスト/無効な入力を管理する(Python)

Pythonでmax(list)min(list)を使用して、リストの最大値と最小値を見つけています。しかし、空のリストをどのように管理するのでしょうか。

たとえば、リストが空のリスト_[]_である場合、プログラムは'ValueError: min() arg is an empty sequence'を発生させますが、プログラムをクラッシュさせるのではなく、単に_'empty list or invalid input'_を出力させる方法を知りたいです。これらのエラーを管理する方法は?

31
Jon_Computer

例外をキャッチして処理します。

try:
    print(min(l), max(l))
except (ValueError, TypeError):
    print('empty list or invalid input')

ValueErrorは、空のシーケンスで発生します。シーケンスに順序付け不可能な型が含まれる場合、TypeErrorが発生します。

11
Qrtn

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が発生します。

63
Alex Riley

以前のバージョンのPythonでデフォルトを指定する:

max(lst or [0])
max(lst or ['empty list'])
44
Curtis Yallop