python:map()或list comprehension?

Wel*_*lls 2 python

pythonistas:哪个更快,哪里a是这样的[ str(x) for x in list(range(100)) ]

ints = map(int, a)

要么

ints = [ int(x) for x in a ]

假设a是一个相对较大的字符串列表......

ozg*_*gur 5

map在我的笔记本电脑上看起来更快(没有lambda)(Macbook Pro Mid 2014,OSX 10.11.4,16GB DDR3 ram,2.2 GHz Intel Core i7):

用Python 2.7.10测试

>>> timeit.timeit("[int(x) for x in range(100)]", number=100000)
1.6301331520080566

>>> timeit.timeit("map(int, range(100))", number=100000)
0.9462239742279053
Run Code Online (Sandbox Code Playgroud)

但是,使用带有lambda函数的map是最慢的:

>>> timeit.timeit("map(lambda x: int(x), range(100))", number=100000)
2.285655994415283
Run Code Online (Sandbox Code Playgroud)