0
A
回答
4
撰寫將需要3個參數:編寫函數,編寫它的次數和初始參數。所以如果你想評估f(f(f(7))),你可以調用compose(f,3,7)。
def compose(f, n, x):
if n == 0: return x
return compose(f, n-1, f(x))
我想到這可能不是你想要的。也許你想能夠寫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)
1
我不知道我是否理解正確,但我相信你期望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
0
使用saulspatz的撰寫和拉姆達
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
0
雖然這可以使用遞歸簡潔地實現,迭代解決方案更高效,並且不會因0的大值而中斷。
def compose(f, n):
def iterated_f(x):
rv = x
while n > 0:
rv = f(rv)
return rv
return iterated_f
相關問題
- 1. 如何在Python中使用迭代器
- 2. 與lambda在球拍迭代?
- 3. 如何使用Python迭代塊設備
- 4. 如何迭代使用itertools在python中具有不同長度的迭代?
- 5. 迭代使用lambda的numpy數組
- 6. 在Python中,如何爲迭代對象迭代多次?
- 7. 如何在Python中迭代字典?
- 8. 如何在Python中迭代值
- 9. 如何在Python中進行迭代?
- 10. 如何在Python中迭代JSON列表?
- 11. 如何迭代使用迭代器
- 12. 在Python中使用lambda
- 13. 如何在Biztalk中使用迭代?
- 14. 如何在迭代器中使用Html.DisplayFor?
- 15. 如何在java中使用迭代器?
- 16. 如何在SQL Server中使用迭代?
- 17. 如何使用python在mongodb中迭代遊標?
- 18. 如何在python中使用迭代器遞歸函數?
- 19. 如何在Python中使用for循環從0迭代到sys.maxint
- 20. 如何使用range()在Python中迭代大數?
- 21. Python和libxml2:如何使用XPATH在XML節點中迭代
- 22. 在迭代數據框時使用lambda代碼效率
- 23. 迭代上使用Python
- 24. 迭代通過使用Python
- 25. 迭代在Python
- 26. 如何Python列表迭代?
- 27. 迭代更新Lambda函數
- 28. 嵌套集合lambda迭代
- 29. 在Python中,如何迭代一個迭代器,然後迭代另一個迭代器?
- 30. 如何通過Python中的已排序迭代進行迭代
有什麼代碼可以顯示嗎? – idjaw
我感覺到[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 – TigerhawkT3