Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用前一个输出作为输入循环函数_Python_Loops - Fatal编程技术网

Python 使用前一个输出作为输入循环函数

Python 使用前一个输出作为输入循环函数,python,loops,Python,Loops,当我的函数foo生成新元素时,我希望重用输出并将其放入foo n次。我怎么做 我的职能: def foo(x): return x + 3 print(foo(1)) >>>4 现在。我正在使用这种方法: print(foo(foo(foo(1)))) 为此使用循环: value = 1 for i in range(10): value = foo(value) 有两种方法可以做你想做的事。首先是递归,但这需要稍微更改foo(),如下所示: def

当我的函数foo生成新元素时,我希望重用输出并将其放入foo n次。我怎么做

我的职能:

def foo(x):
    return x + 3


print(foo(1))
>>>4
现在。我正在使用这种方法:

print(foo(foo(foo(1))))
为此使用循环:

value = 1
for i in range(10):
    value = foo(value)

有两种方法可以做你想做的事。首先是
递归
,但这需要稍微更改
foo()
,如下所示:

def foo(x, depth):
    if depth <= 0:
        return x
    return foo(x+3, depth-1)

您正在搜索的内容称为递归:

def foo(x,n=1):
如果n==0:
返回x
返回foo(x+3,n-1)
输出:

19

另一种可能是使用lambda和reduce

结果你会得到10分

# y = assigned return value of foo.
# _ = is the list of numbers from range(3) for reduce to work
# 3 = n times
# 1 = param for x in foo

你正在搜索的东西叫做递归,实际上他正在搜索的东西叫做循环。
19
from functools import reduce

def foo(x):
    return x + 3

print(reduce(lambda y, _: foo(y), range(3), 1))
# y = assigned return value of foo.
# _ = is the list of numbers from range(3) for reduce to work
# 3 = n times
# 1 = param for x in foo