gpt4 book ai didi

Python reduce 相反 : generate values by invoking function on previous returned value

转载 作者:行者123 更新时间:2023-11-28 16:29:13 25 4
gpt4 key购买 nike

我想知道在 Python (2.7) 中是否有与 reduce 函数相反的东西。我知道 reduce 的工作方式如下:

reduce( lambda x,y : x+y, [1,2,3,4,5]) == 15.

它接受第一个参数和第二个参数,并从第一个参数调用函数,然后获取结果和列表中的下一项并再次调用该函数。

我想做相反的事情——从一个元素生成列表。会是这样的:

reduce_opposite( lambda x: x**2, 3, n_times=3) == [(3 ** 2), (9 ** 2), (81 ** 2)]

接受函数、初始参数和 n 并将此初始参数作为函数输入的东西。然后将结果存储在列表中,并再次调用函数,但使用之前调用的结果。

Python 中有这样的东西吗?如果不是……出于好奇,是否有任何语言都有这样的东西?你怎么调用它?我正在寻找非常短的东西。我可以编写自己的复杂函数来执行此操作。

最佳答案

据我所知,没有内置函数可以执行此操作,但是编写一个生成器(或类似的东西)来执行相同的技巧非常简单。例如:

def reduce_opposite(fn, start, n_times=3):
for _ in range(n_times):
start = fn(start)
yield start

然后:

>>> list(reduce_opposite(lambda x: x**2, 3, n_times=3))
[9, 81, 6561]

生成器在调用之间保留其局部变量的事实使这成为可能。

关于Python reduce 相反 : generate values by invoking function on previous returned value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33745677/

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