gpt4 book ai didi

python - 我可以在reduce函数中添加一个迭代器吗?

转载 作者:行者123 更新时间:2023-12-05 01:08:14 25 4
gpt4 key购买 nike

假设我有以下列表:A = [1,2,3,4],通过使用reduce函数,求元素的乘积,我可以的

prodA = reduce(lambda x,y: x*y, A)

但是,如果我有另一个列表 B=[9,8,7,6],我是否仍然可以使用 reduce 函数来执行后续行动? (从上到下表示步骤)

9
(9+1)* 2
((9+1) *2)+8
(((9+1) *2)+8)*3
((((9+1) *2)+8)*3)+7
(((((9+1) *2)+8)*3)+7)*4
((((((9+1) *2)+8)*3)+7)*4)+6

我不太确定是否可以将列表 B 的迭代器添加到 reduce 函数中。我怎么能这样做?非常感谢!

最佳答案

这看起来像是 zip 的工作.具体来说,我们要将两个列表压缩在一起,然后我们会将归约函数表示为一个接受元组而不是简单整数的函数。

将我们的列表压缩在一起给我们

>>> list(zip(A, B))
[(1, 9), (2, 8), (3, 7), (4, 6)]

您的函数在每一步都乘以 A 的一个元素,然后添加一个 B 的元素。因此,从 1 开始(这是一个合理的默认设置,因为我们要做的第一件事是相乘,所以 1 将是第一个操作的标识),乘以元组的第一个元素并添加第二个。

reduce(lambda x, y: x * y[0] + y[1], zip(A, B), 1)

并且,根据您的输入,我们得到 370,它等于

((((9+1)*2)+8)*3+7)*4+6

关于python - 我可以在reduce函数中添加一个迭代器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66298347/

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