1
A
回答
3
首先,對性能的可讀性 - 除非你能證明這是你的程序的瓶頸,否則可以使用更易讀的列表理解。
如果是一個瓶頸,然後做一些性能測試(見the timeit
module) - 但除非所有的功能都微不足道,但它可能會不太重要方式。
做一個快速測試:
python -m timeit -s "functions = [lambda x: x+y for y in range(1000)]" -s "values = list(range(1000))" "[f(x) for f,x in zip(functions, values)]"
1000 loops, best of 3: 207 usec per loop
python -m timeit -s "functions = [lambda x: x+y for y in range(1000)]" -s "values = list(range(1000))" "list(map(lambda f,x: f(x), functions, values))"
1000 loops, best of 3: 315 usec per loop
如果你想生成器表達式:
python -m timeit -s "functions = [lambda x: x+y for y in range(1000)]" -s "values = list(range(1000))" "list(f(x) for f,x in zip(functions, values))"
1000 loops, best of 3: 250 usec per loop
而且使用Python 2.x的舊風格的地圖產生的列表馬上的完整性(相當於列表理解的例子):
python2 -m timeit -s "functions = [lambda x: x+y for y in range(1000)]" -s "values = list(range(1000))" "map(lambda f,x: f(x), functions, values)"
1000 loops, best of 3: 234 usec per loop
我們可以看到列表compr無論如何,ehension贏得了表演。
相關問題
- 1. '&'在函數參數列表
- 2. 的Python 2.5和列表函數參數
- 3. C#函數參數數組與列表
- 4. 函數和列表
- 5. 函數轉換和函數參數列表的內部表示C
- 6. 帶列表參數的映射函數
- 7. LALR(1)空函數參數列表
- 8. 應用列表到函數的參數
- 9. 調用函數時的參數列表
- 10. 函數與通用列表參數
- 11. python中lambda函數的列表參數
- 12. Python函數長參數列表
- 13. sml列表參數函數遞歸
- 14. 函數參數中的列表理解
- 15. 蟒通列表作爲函數參數
- 16. 參數列表中的函數指針
- 17. Python - 函數/參數元組列表
- 18. Python列表函數參數名稱
- 19. 方案,函數列表作爲參數
- 20. 函數簡化參數列表
- 21. 內聲明函數參數列表
- 22. VBA函數參數列表中選擇
- 23. Python函數參數:元組/列表
- 24. 具有通用列表參數的函數? (超載函數)
- 25. VBA函數=函數參數?
- 26. 瞭解fminunc參數和匿名函數,函數處理函數
- 27. 函數模板參數和模板成員函數參數
- 28. 處理函數和參數
- 29. python和函數參數
- 30. 線程和函數參數
「lambda昂貴」是無稽之談。 –
CatPlusPlus說了些什麼,還有如何自己測試它? http://docs.python.org/library/timeit.html – rantanplan
@CatPlusPlus *相對*昂貴。一次又一次的測試會告訴你,如果你在地圖上使用'lambda',列表理解將優於'map()'。 –