如何在Python中使用lambda迭代
谢谢你们。我发现我不能在网上发布我的问题如何在Python中使用lambda迭代,python,lambda,iterator,Python,Lambda,Iterator,谢谢你们。我发现我不能在网上发布我的问题 但是,它对我来说确实很有帮助。编写需要3个参数:编写函数、编写次数和初始参数。所以如果你想计算f(f(f(7)),你可以调用compose(f,3,7) 我突然想到也许这不是你想要的。也许您希望能够编写g=compose(f,3),然后调用g(7)。这只需要稍作修改: def compose(g, m): def composer(f, n, x): if n == 0: return x return compose
但是,它对我来说确实很有帮助。编写需要3个参数:编写函数、编写次数和初始参数。所以如果你想计算f(f(f(7)),你可以调用compose(f,3,7) 我突然想到也许这不是你想要的。也许您希望能够编写
g=compose(f,3)
,然后调用g(7)
。这只需要稍作修改:
def compose(g, m):
def composer(f, n, x):
if n == 0: return x
return compose(f, n-1, f(x))
return lambda x: composer(g, m, x)
Compose需要3个参数:要编写的函数、编写的次数和初始参数。所以如果你想计算f(f(f(7)),你可以调用compose(f,3,7) 我突然想到也许这不是你想要的。也许您希望能够编写
g=compose(f,3)
,然后调用g(7)
。这只需要稍作修改:
def compose(g, m):
def composer(f, n, x):
if n == 0: return x
return compose(f, n-1, f(x))
return lambda x: composer(g, m, x)
我不确定我是否理解正确,但我相信您希望compose()返回一个函数。在这种情况下,这将起作用:
def compose(f, n):
def composed_f(x):
result = x
for i in range(n):
result = f(result)
return result
return composed_f
所以,如果你写:
a = compose((lambda x:x*2), 5)
print a(1)
您将得到32个我不确定是否理解正确,但我相信您希望compose()返回一个函数。在这种情况下,这将起作用:
def compose(f, n):
def composed_f(x):
result = x
for i in range(n):
result = f(result)
return result
return composed_f
所以,如果你写:
a = compose((lambda x:x*2), 5)
print a(1)
使用索尔斯帕茨的作曲和lambda,你将得到32个
cubed = lambda x: x**3
def compose(f, n, x):
if n == 0: return x
return compose(f, n-1, f(x))
print(compose(cubed,2,2))
512
使用saulspatz的作曲和lambda
cubed = lambda x: x**3
def compose(f, n, x):
if n == 0: return x
return compose(f, n-1, f(x))
print(compose(cubed,2,2))
512
虽然可以使用递归简洁地实现这一点,但迭代解决方案更有效,并且不会因
n
的大值而中断
def compose(f, n):
def iterated_f(x):
rv = x
while n > 0:
rv = f(rv)
return rv
return iterated_f
虽然可以使用递归简洁地实现这一点,但迭代解决方案更有效,并且不会因
n
的大值而中断
def compose(f, n):
def iterated_f(x):
rv = x
while n > 0:
rv = f(rv)
return rv
return iterated_f
有什么代码可以显示吗?我感觉到一个。有什么代码可以显示吗?我感觉到一个。