2016-04-03 39 views
2

pythonistas:哪個更快,哪裏的a就像[ str(x) for x in list(range(100)) ]python:map()或列表理解?

ints = map(int, a)

或者

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

假設a將字符串比較大的列表...

+2

地圖會更快,之後,這是個人喜好。地圖發生在C級,一旦你使用沒有使用lambda的地圖和一些內置的方法,它通常會比在列表中做同樣的事情更快comp –

+2

CPython沒有大部分使基準難以用於像C這樣的語言的效果或Java,所以你可以[定時](https://docs.python.org/2/library/timeit.html),並可能得到正確的答案。 – user2357112

+0

閱讀此:http://stackoverflow.com/a/1247490/4941927 我認爲每個人可能會根據您的需要有所幫助。 – Milor123

回答

5

map看起來在我的筆記本(快(無拉姆達) Macbook Pro 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 

但是,使用地圖lambda函數是最慢的:

>>> timeit.timeit("map(lambda x: int(x), range(100))", number=100000) 
2.285655994415283