オブジェクトの合計を作成するのと似た方法で、リスト内の一連の要素を組み合わせて最終的なオブジェクトを作成しようとしています。reduce
これを行うために、フラットリストではなくペアのリストを検討する場所について、単純なバリエーションを使用しようとしています。私は次の行に沿って何かをしたい:
nums = [1, 2, 3]
reduce(lambda x, y: x + y, nums)
ただし、数値のリスト内の各要素に固有の合計に追加情報を追加したいと思いますnums
。たとえば、リスト内の各ペア (a,b) について、合計を (a+b) として実行します。
nums = [(1, 0), (2, 5), (3, 10)]
reduce(lambda x, y: (x[0]+x[1]) + (y[0]+y[1]), nums)
これは動作しません:
>>> reduce(lambda x, y: (x[0]+x[1]) + (y[0]+y[1]), nums)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <lambda>
TypeError: 'int' object is unsubscriptable
うまくいかないのはなぜですか?フラットリストとしてエンコードできることは知っていnums
ます-それはポイントではありません-ペアのリスト、または同じ長さの2つのリストを同時に反復し、両方から情報をプールできるreduce操作を作成できるようにしたいだけですリスト。ありがとう。