9
A
回答
5
有一些不錯的功能樣式片段在這裏:Functional Programming HOWTO
2
這裏是快速排序:
def qsort (list):
if (len(list) > 1):
list = qsort(filter (lambda x: x <= list[0], list[1:])) + [list[0]] + qsort(filter (lambda x: x > list[0], list[1:]))
return list
這一個是尋找從1整數中的缺失數量的編程謎題的解決方案到100:
from random import randint
nos = range(1,101)
to_remove = randint(1,100)
nos.remove(to_remove)
print "Removed %d from list" % to_remove
found = 5050 - reduce (lambda x,y: x+y, nos)
print "You removed %d " % found
7
3
在編寫功能風格的python時要小心。唯一的理由是爲了可讀性。如果算法在功能上比命令更優雅地表達,並且不會導致性能問題(通常不會),那麼請繼續前進。但是,python並沒有優化尾遞歸,並且有一個固定的1000遞歸限制,所以你通常不能做O(n)遞歸,只有O(log(n))。
另外,reduce()在python 3中被刪除,理由很充分(http://www.artima.com/weblogs/viewpost.jsp?thread=98196)。減少的大多數非平凡使用作爲正常循環而不是減少可讀性更高,並且已經內置sum()。
+0
雖然'reduce'仍然在'functools'中。 – max 2012-10-10 21:29:00
相關問題
- 1. Python的函數式編程
- 2. 函數式編程函數
- 3. 函數式編程
- 4. 以編程方式替換片段
- 5. 以編程方式切換片段
- 6. 函數式編程SOLID用於函數式編程
- 7. 函數式編程教程
- 8. 學習函數式編程
- 9. 函數式編程示例
- 10. 函數式編程公理
- 11. 函數式編程文檔
- 12. 函數式編程新手
- 13. 求和函數式編程
- 14. Android編程中的片段
- 15. Android以編程方式添加片段不接受參數
- 16. 以編程方式創建片段並設置參數
- 17. 應用程式的片段
- 18. Python編程字符串處理函數
- 19. 在Python中的函數式編程:不返回正確的值
- 20. for循環與函數式編程風格的打印python
- 21. 以編程方式在片段之間切換
- 22. 以編程方式將片段添加到視圖組
- 23. 以編程方式返回到上一個片段
- 24. 以編程方式更新片段的佈局
- 25. 以編程方式在片段內用ImageButton膨脹佈局
- 26. 片段:以編程方式創建視圖的XML填補
- 27. 返回片段後以編程方式添加ImageView
- 28. 如何以編程方式添加地圖片段
- 29. 設置片段ID編程方式與事務中的Android
- 30. 以xml或編程方式添加片段?
好問題,但**社區wiki **! – 2010-01-19 12:26:09