3

私が持っているもの:

array = original_array[:]
result = reduce(lambda a,b: some_function(b,array), array)

私が欲しいもの:

array = original_array [:]ステートメントを削除したい。理想的には、reduce()内の配列パラメーターをoriginal_array [:]に置き換えるだけですが、ラムダ内にも必要です。ラムダ内から配列パラメーターを参照する方法はあり ますか?

以下は、すべての要素に対して新しい配列コピーを作成するため、許容できる解決策ではありません。

result = reduce(lambda a,b: some_function(b,original_array[:]), original_array[:])

私はこのようなものが必要です:

result = reduce(lambda a,b: some_function(b,reduce_parameter), original_array[:])
4

3 に答える 3

6

全体を別のラムダでラップすることができます:

result = (lambda array: reduce(lambda a,b: some_function(b,array), array))(original_array[:])

しかし、あなたの元の解決策は、より読みやすいので、私の意見では好ましいです。

于 2012-11-13T20:32:51.487 に答える
2

その外側のラムダを削除する方法は次のとおりです

result = reduce(lambda a,b,array=array[:]: some_function(b,array), array)

編集:おっと、質問を読み間違えた

もちろん、これは、実際にアレイをコピーする必要があり、使用するのに十分ではないことを前提としています。

result = reduce(lambda a,b: some_function(b, array), array)

また、これはreduceの誤った使用法です-a引数を使用していないのでresultsome_function(array[-1], array)

于 2012-11-13T20:39:54.777 に答える
0

試す:

result = reduce(lambda a,b, array=array: some_function(b,array), array)
于 2012-11-13T20:40:14.843 に答える