私は次の関数の例を持っています(数のリストの平均):
def avg(obs):
return (1. / len(obs)) * np.sum(obs)
avg([1,2,3,4,5])
3.0
次のように、単一の反復可能な引数と 2 つ以上の引数を使用する方法を理解するのは興味深いことです。max()
max(1,2,3,4,5)
5
max([1,2,3,4,5])
5
私は次の関数の例を持っています(数のリストの平均):
def avg(obs):
return (1. / len(obs)) * np.sum(obs)
avg([1,2,3,4,5])
3.0
次のように、単一の反復可能な引数と 2 つ以上の引数を使用する方法を理解するのは興味深いことです。max()
max(1,2,3,4,5)
5
max([1,2,3,4,5])
5
まず、正当な理由がない限り、そうすべきではありません。バイナリ形式が非常に一般的であるため、これmin
を行いますが、たとえば、イテラブルでのみ動作します。max
sum
とはいえ、次のようにします。
from collections import Sized
def avg(*obs):
if len(obs) == 1 and isinstance(obs[0], Sized):
obs = obs[0]
return (1. / len(obs)) * sum(obs)
(Sized
は、リスト、セット、辞書、タプル、NumPy 配列、およびその他のさまざまなコンテナーを一般化する抽象基本クラスですlen
。定義されていることを確認します。)