सोचा था कि मैं जवाबों को मजबूत करूंगा और कुछ timeit
परिणाम दिखाऊंगा ।
पायथन 2 इस पर बहुत बुरा चूसता है, लेकिन map
समझ से थोड़ा तेज है।
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import timeit
>>> setup = """import random
random.seed(10)
l = [str(random.randint(0, 99)) for i in range(100)]"""
>>> timeit.timeit('[int(v) for v in l]', setup)
116.25092001434314
>>> timeit.timeit('map(int, l)', setup)
106.66044823117454
पायथन 3 अपने आप में 4x से अधिक तेज है, लेकिन map
जेनरेटर ऑब्जेक्ट को किसी सूची में परिवर्तित करना अभी भी समझ से अधिक तेज है, और map
जनरेटर को अनपैक करके सूची बनाना (धन्यवाद आर्टेम!) अभी भी थोड़ा तेज है।
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import timeit
>>> setup = """import random
random.seed(10)
l = [str(random.randint(0, 99)) for i in range(100)]"""
>>> timeit.timeit('[int(v) for v in l]', setup)
25.133059591551955
>>> timeit.timeit('list(map(int, l))', setup)
19.705547827217515
>>> timeit.timeit('[*map(int, l)]', setup)
19.45838406513076
नोट: पायथन 3 में, 4 तत्व क्रॉसओवर पॉइंट (3 पायथन 2 में) प्रतीत होते हैं, जहां समझ थोड़ी तेज है, हालांकि जनरेटर को अनपैक करना अभी भी 1 से अधिक तत्व वाली सूचियों की तुलना में तेज है।