入力リストの累積合計、累積積、最大値、最小値を返す関数をコーディングする必要があるmoocに代入があります。
コースのこの部分は関数型プログラミングに関するものでしたので、他の方法を使用することはできますが、私はこれをすべて使いたいと思っていました。
だから私はこれを試してみました:関数リストと引数のマップ:アンパックの難易度
from operator import mul
from itertools import repeat
from functools import reduce
def reduce2(l):
print(l)
return reduce(*l)
def numbers(l):
return tuple(map(reduce2, zip([sum, mul,min, max], repeat(l,4))))
l=[1,2,3,4,5]
numbers(l)
私の問題は、それが動作しないということです。 zipはマップ内で使用すると1つのオブジェクトしか渡されず、zipをアンパックすると(関数と引数リストl)の4つのタプルが得られますので、reduce2を定義していますので、動作しませんでした。
Pythonは型エラーを返します:int 'オブジェクトは反復可能ではありません
reduce2(l [0]、l [1])を使用することができますが、それでも同じエラーがあります。
ここではPythonの動作を理解していません。 返り値reduce(l)を使用するだけで、TypeErrorが返されます。予想される引数が2つ以上の場合、1を返します。
ここでは何が起こっていますか?どうすればそれを動作させることができますか? ご協力いただきありがとうございます。
命名規則に関する正確さに感謝します。私はそれを知らなかった。addのためにうまくいっていますが、実際には合計はreduceと冗長ですが、今は理解しています。 –