0

私は次の関数の例を持っています(数のリストの平均):

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
4

1 に答える 1

6

まず、正当な理由がない限り、そうすべきではありません。バイナリ形式が非常に一般的であるため、これminを行いますが、たとえば、イテラブルでのみ動作します。maxsum

とはいえ、次のようにします。

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。定義されていることを確認します。)

于 2013-02-24T23:37:22.010 に答える