Python ยืดหยุ่น สร้างลิสต์ได้หลายวิธี แต่วิธีแต่ละอย่างมีความเร็วต่างกัน Python ช้ากว่า C++/Java โดยเฉพาะ for loop ในขณะที่ map(), filter() เร็วกว่าเพราะเขียนใน C
เปรียบเทียบ 4 วิธี (รัน 500 รอบ หาค่าเฉลี่ย)
import time
forLoopTime = []
whileLoopTime = []
listCompTime = []
starOpTime = []
for _ in range(500):
# 1. for loop + append
start = time.time()
a = []
for i in range(10000):
a.append(0)
forLoopTime.append(time.time() - start)
# 2. while loop + append
start = time.time()
a = []
i = 0
while i < 10000:
a.append(0)
i += 1
whileLoopTime.append(time.time() - start)
# 3. List comprehension
start = time.time()
a = [0 for i in range(10000)]
listCompTime.append(time.time() - start)
# 4. * operator
start = time.time()
a = [0] * 10000
starOpTime.append(time.time() - start)
print(f"for loop: {sum(forLoopTime)/500:.6f} s")
print(f"while loop: {sum(whileLoopTime)/500:.6f} s")
print(f"list comp: {sum(listCompTime)/500:.6f} s")
print(f"* operator: {sum(starOpTime)/500:.6f} s")
ผลลัพธ์ทั่วไป
for loop: 0.006237 s while loop: 0.008877 s list comp: 0.003185 s * operator: 0.000372 s
สรุป
- [0] * n เร็วที่สุด (สร้างลิสต์ใน C ระดับเดียว)
- List comprehension เร็วกว่า for loop ประมาณ 2 เท่า
- for loop + append ช้ากว่า list comprehension
- while loop ช้าที่สุด
หมายเหตุ: [0]*n สร้างอ้างอิงซ้ำกันสำหรับ mutable objects (เช่น list ใน list) ต้องระวัง