python融合list速度比较

list comprehension 快许多,大概是因为少了中间建立新list的步骤

横坐标数据规模,纵坐标秒

 

import timeit
import matplotlib.pyplot as plt
from tqdm import tqdm_notebook as tqdm

def s():
    a = sum([li for li in l],[])
    return a

def c():
    a = [i for ii in l for i in ii]
    return a

x = 13
ds = []
dc = []
for i in tqdm(range(x)):
    l = [[0]*100 for ii in range(2**i)]
    ds.append(timeit.timeit(s, number=10,globals=globals()))
    dc.append(timeit.timeit(c, number=10,globals=globals()))
xx = [2**xi for xi in range(x)]

plt.plot(xx,[i/10 for i in ds],label='sum(lists,[])')
plt.plot(xx,[i/10 for i in dc],label='[i for list in lists 
posted @ 2020-04-26 14:06  e-yi  阅读(9)  评论(0)    收藏  举报  来源