Lesson1-25:Allmax
ポイント
keyでFunctionを指定する際に、初期入力がNoneの時の対象法
Key指定時の注意点
pythonにおいてmax(a, key=function)など、基準として関数を指定することが可能。 このような関数を独自で実装するとき、key指定がない場合のfunctionをどうするかが問題になる。 この時lambda関数をデフォルト指定にしたい場合の実装をまとめる。
def allmax(iterable, key=None): "Return a list of all items equal to the max of the iterable." result, maxval = [], None key = key or (lambda x: x) # keyがNoneの場合、lambdaを指定する。 for x in iterable: xval = key(x) if not result or xval > maxval: result, maxval = [x], xval elif xval == maxval: result.append(x) return result