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()'。 –