次のような実験を見てみましょう:
>>> reduce(lambda(a,b),c: (a+[c],b) if c > 60 else (a,b + [c]), [49],([],[]))
([], [49])
>>> reduce(lambda(a,b),c: (a+[c],b) if c > 60 else (a,b + [c]), [49,58],([],[]))
([], [49, 58])
>>> reduce(lambda(a,b),c: (a+[c],b) if c > 60 else (a,b + [c]), [49,58,76],([],[]))
([76], [49, 58])
>>> reduce(lambda(a,b),c: (a+[c],b) if c > 60 else (a,b + [c]), [49,58,76,82],([],[]))
([76, 82], [49, 58])
>>> reduce(lambda(a,b),c: (a+[c],b) if c > 60 else (a,b + [c]), [49,58,76,82,88,90],([],[]))
([76, 82, 88, 90], [49, 58])
機能reduce
を次のように説明されています。私たちの例では
reduce(...)
reduce(function, sequence[, initial]) -> value
Apply a function of two arguments cumulatively to the items of a sequence,
from left to right, so as to reduce the sequence to a single value.
、関数は2要素として最初の引数とラムダ関数でありますタプル(a,b)
と第2引数を整数としてc
が処理のためにリストから取り上げられました。関数はリストの2要素タプルを生成するので、([], [])
として初期化されます。処理が開始されると、要素が> 60の場合、それはタプルの最初のリストに追加されます。それ以外の場合は、タプルの2番目のリストに追加されます。
構文a+[c]
は実際にはリストの構文extend
です。 a
がリストで、c
が整数なので、a+c
は実行できません。同様に、b+[c]
の場合
の場合c> 60の場合は(a [0]、a [1] + [c](a [0] + [c]、a [1] ])、[49,58,76,82,88,90]、([]、[])) –
@arvindpdmn多くの感謝! –