python的设计哲学里,有一句“There should be one-- and preferably only one --obvious way to do it.”,那么如果列表推导和循环以及map/filter实现上没有什么区别的话,应该就不会存在了吧?当然python的哲学里还有“Beautiful is better than ugly.”,貌似也有可能只是为了好看的样子...
回复内容:
首先肯定 map 和列表推导效率确实会比循环的高,
先说列表推导,下边是我在 ipython 里的测试结果(测试环境 Python 2.7.10):
>>> long_list = range(1000) >>> a = [] >>> %timeit for i in long_list: a.append(i+1) 10000 loops, best of 3: 100 μs per loop >>> %timeit [i+1 for i in long_list] 10000 loops, best of 3: 43.3 μs per loop效率高一点,去看 dis 模块。
Python 不喜欢 FP 的,而且 map / filter 是惰性的,list comprehension 不是。
循环比 list comprehension 更底层而难以被理解一些。比较:「把这个列表里的所有元素乘以二」和「创建一个空列表 B,对列表 A 里的每一个元素,将其乘以二的结果添加到 B 的尾部」。
PS: 对于每一个可以用多种途径实现的用例,我基本上都可以确定一个最优的途径。
查看更多关于Python中列表推导(listcomprehension)相对于循环有什么优势?性能会更高吗?的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did90049