คิดว่าฉันจะรวบรวมคำตอบและแสดงtimeit
ผลลัพธ์บางอย่าง
Python 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
Python 3 เร็วกว่าตัวมันเองถึง 4 เท่า แต่การแปลงmap
ออบเจ็กต์ตัวสร้างไปยังลิสต์นั้นยังเร็วกว่าความเข้าใจและการสร้างลิสต์โดยการเอาตัวmap
กำเนิดออกมา(ขอบคุณ Artem!) ก็ยังเร็วขึ้นเล็กน้อย
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
หมายเหตุ: ใน Python 3 องค์ประกอบ 4 ดูเหมือนจะเป็นจุดไขว้ (3 ใน Python 2) โดยที่ความเข้าใจนั้นเร็วขึ้นเล็กน้อยแม้ว่าการคลายตัวกำเนิดยังคงเร็วกว่าทั้งรายการที่มีองค์ประกอบมากกว่า 1 รายการ