import time
N = 10**7
t0 = time.time()
lst = []
for i in range(N):
lst.append(i)
print("append:", time.time() - t0)
t0 = time.time()
lst = [i for i in range(N)]
print("comprehension:", time.time() - t0)
t0 = time.time()
lst = list(range(N))
print("list(iterable):", time.time() - t0)
append: 0.561028242111206 comprehension: 0.3148791790008545 list(iterable): 0.15317654609680176
list의 할당된 크기를 초과할 때마다 list의 메모리를 재할당 후 복사해야되서 느리다.
list의 크기를 한번에 할당하고 최적화가 잘 되어있음, 그러나 for를 돌기에 인터프리터에서 실행됨
list의 method는 C코드로 구현되어 인터프리터(bytecode) 실행이 아닌 C코드가 실행됨
그러나 list의 크기를 파악하지 못하는 경우 conprehension이 빠를 수 있음(최적화 차이)