リスト内の要素の数を数えるには、reduce関数を使う必要があります。ベルリンからpython - reduce()関数を使ったリストの長さ
TypeError: <lambda>() takes 1 positional argument but 2 were given
ご挨拶:私は、次のエラーメッセージが表示されます。このいずれかで
def lenReduce(L):
return reduce(lambda x: x + 1, L)
。 ;-)
リスト内の要素の数を数えるには、reduce関数を使う必要があります。ベルリンからpython - reduce()関数を使ったリストの長さ
TypeError: <lambda>() takes 1 positional argument but 2 were given
ご挨拶:私は、次のエラーメッセージが表示されます。このいずれかで
def lenReduce(L):
return reduce(lambda x: x + 1, L)
。 ;-)
reduce
の関数引数は、前の呼び出しの戻り値とリストの項目の2つの引数をとります。この場合
def counter(count, item):
return count + 1
、あなたは本当にitem
の値が何であるかを気にしません。単にcounter
にそれを渡すことは
def lenReduce(L):
return reduce(lambda count, item: count + 1, L)
にもかかわらずあなた関数は第二引数を無視し、あなたがlambda
式を使用して、現在のカウンタの値に1を加え
def lenReduce(L):
return reduce(counter, L)
かを返すようにしたいことreduce
はまだそれを関数に渡すことができると予想しているので、2つの引数をとるように定義する必要があります。
lenReduce([5,3,1])
戻り、これはラムダ関数は、最初の2 elemetsある3
に設定されている5
とitem
に、count
が設定されて呼び出される非常に最初の時間のために、ある意味何7
リスト。ラムダ関数の次の呼び出しから、count
がインクリメントされます。したがって、解決策は機能しません。
解決策は、リストの最初の要素ではなく、選択した値にカウントを設定することです。これを行うには、3つの引数を指定してreduceを呼び出します。低減の上記コールで
def lenReduce(L):
return reduce(lambda count, item: count + 1, L, 0)
、count
0
に設定され、項目は各反復のインデックス0
から始まるリストの要素に設定されます。
lenReduce([3,2,1])
出力3
が望ましい結果です。