Python 使用前一个输出作为输入循环函数
当我的函数foo生成新元素时,我希望重用输出并将其放入foo n次。我怎么做 我的职能: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
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