Я пытаюсь соединить кучу элементов в списке, чтобы создать конечный объект, аналогично созданию суммы объектов. Я пытаюсь использовать простую вариацию 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
как плоский список - это не главное - я просто хочу иметь возможность создать операцию сокращения, которая может выполнять итерацию по списку пар или по двум спискам одинаковой длины одновременно и объединять информацию из оба списка. Спасибо.