gpt4 book ai didi

python-3.x - 如何将 reduce 函数的每次迭代存储在列表中?

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

在下面的代码中,输出是 38,我想要一个包含输出 [34,36,38] 的单独列表。

from functools import *
nums = [0, 34, 2, 2]
sum_num = reduce(lambda a, b : a+b, nums)

由于 reduce 函数添加了 034,我需要将这个值附加到一个单独的列表中,现在在第二次迭代中我需要获取 34 + 2 附加到列表。最后 38 将附加到列表中。我需要添加什么代码才能获得所需的输出?

最佳答案

你需要一个不同的函数。 itertools.accumulate() 生成所有中间结果 functools.reduce() 在幕后生成:

>>> from itertools import accumulate
>>> nums = [0, 34, 2, 2]
>>> list(accumulate(nums))
[0, 34, 36, 38]

它默认使用加法。或者你可以传递你想要的任何其他 2-argument 函数:

>>> list(accumulate(nums, lambda a, b: a + b)) # same as the default
[0, 34, 36, 38]
>>> list(accumulate(nums, lambda a, b: a + 2*b))
[0, 68, 72, 76]

如果您不想要开头的 0,则必须自己删除它;例如,

>>> f = accumulate(nums)
>>> next(f) # throw out first result
0
>>> list(f) # and make a list out of what remains
[34, 36, 38]

关于python-3.x - 如何将 reduce 函数的每次迭代存储在列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60194925/

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