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. 以編程方式編排android片段
- 3. python中的函數式編程
- 4. 函數式編程函數
- 5. 函數式編程
- 6. 以編程方式替換片段
- 7. 以編程方式切換片段
- 8. 函數式編程SOLID用於函數式編程
- 9. 函數式編程教程
- 10. 學習函數式編程
- 11. 函數式編程和Haskell
- 12. SML-函數式編程
- 13. 函數式編程新手
- 14. 函數式編程練習
- 15. 函數式編程公理
- 16. 求和函數式編程
- 17. 函數式編程文檔
- 18. 函數式編程示例
- 19. Android編程中的片段
- 20. 以編程方式創建片段並設置參數
- 21. Android以編程方式添加片段不接受參數
- 22. 無法以編程方式實現片段後編輯文本
- 23. 根據公式編寫函數(Python)
- 24. 如何以編程方式在代碼片段中包含yasnippet片段
- 25. 應用程式的片段
- 26. 函數式編程或工作流程?
- 27. Ruby中的命令式編程與函數式編程
- 28. 函數 - Python的正在編程
- 29. Python編程 - 每個函數調用
- 30. Python編程字符串處理函數
好問題,但**社區wiki **! – 2010-01-19 12:26:09