gpt4 book ai didi

python - 使用reduce在python中乘以成对元素

转载 作者:行者123 更新时间:2023-11-28 20:35:28 26 4
gpt4 key购买 nike

对于像这样的列表:

a = [1,2,3,4,5,6] 

我想使用下面的代码来乘以这样的成对元素:

(a[0] + a[1]) * (a[2] + a[3]) * (a[4] + a[5])

我试过使用类似的东西:

reduce((lambda x, y: (x+y)), numbers) 

和:

reduce((lambda x, y: (x+y)*(x+y)), numbers) 

但我不知道如何让它适用于整个列表。任何帮助将不胜感激。

整个解决方案必须适合 reduce,我不能导入任何其他模块。

最佳答案

您可以减少您自己的生成器,该生成器给出可迭代对象中的对的总和:

def pairwise_sum(seq):
odd_length = len(seq) % 2

it = iter(seq)
for item1, item2 in zip(it, it):
yield item1 + item2
if odd_length:
yield seq[-1]

>>> reduce(lambda x, y: x*y, pairwise_sum([1,2,3,4,5,6]))
231

或者,如果您希望它更通用,您可以使用 grouper recipe添加所有对,然后使用 reduce 乘以所有总和:

from itertools import zip_longest
from functools import reduce
from operator import mul

def grouper(iterable, n, fillvalue=None):
args = [iter(iterable)] * n
return zip_longest(*args, fillvalue=fillvalue)

>>> reduce(mul, map(sum, grouper([1,2,3,4,5,6], 2, fillvalue=0)))
231

关于python - 使用reduce在python中乘以成对元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46719293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com