Python Forum

Full Version: List comprehension:
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi

I'm trying to figure out how a list comprehesion works from a "memory" point of view?

I mean that append corresponds to a dynamic allocation memory, but what about the list comprehension?

In other word, I'm wondering if I can speed up my code using both matrix initialization and list comprehension when I cannot use vectorization.

Here is my small test case

import numpy as np
import time

n=10_000_000

# using append
t0=time.time()
Matrix0=[]
for i in range(n):
    Matrix0.append(i)
t1=time.time()
print(f"Duration with append: {t1-t0}")


#  with loops
t0=time.time()
Matrix1=np.zeros(n, dtype=int)
for i in range(n):
    Matrix1[i]=i
t1=time.time()
print(f"Duration with loops: {t1-t0}")

# with list comprehension
t0=time.time()
Matrix2=[i for i in range(n)]
t1=time.time()
print(f"Duration with list comprehension: {t1-t0}")

#with vectorization
t0=time.time()
Matrix3=np.zeros(n, dtype=int)
i = np.arange(n)
Matrix3[i]=i
t1=time.time()
print(f"Duration with vectorization: {t1-t0}")
Output:
Duration with append: 2.374998092651367 Duration with loops: 2.8437514305114746 Duration with list comprehension: 0.7031333446502686 Duration with vectorization: 0.0937495231628418
Thanks for any feedback or advice

Paul