comparison of four ways to generating a list

来源:互联网 发布:java traceid 追踪 编辑:程序博客网 时间:2024/05/23 00:00
from time import timedef timeit(func):    '''Use this decorator to measure execution time of a function.       eg.       @timeit       def yourFunction(args):            dosomething...    '''    def wrapper(*args, **kwargs):        start = time()        res = func(*args, **kwargs)        elapsed = time() - start        print('Function %s costs time: %10.6f seconds.' % (func.__name__, elapsed))        return res    return wrapper# 4 different ways to generating a list of n numbers starting with 0# Using concatenation@timeitdef gen_list_1(n):    L = []    for i in range(n):        L = L + [i]# Using append method@timeitdef gen_list_2(n):    L = []    for i in range(n):        L.append(i)# Using list comprehension@timeitdef gen_list_3(n):    L = [i for i in range(n)]# Using list construction@timeitdef gen_list_4(n):    L = list(range(n))if __name__ == '__main__':    gen_list_1(100000)    gen_list_2(100000)    gen_list_3(100000)    gen_list_4(100000)   

The result as below:

Function gen_list_1 costs time: 19.48219490 seconds.Function gen_list_2 costs time: 0.01999998 seconds.Function gen_list_3 costs time: 0.00999999 seconds.Function gen_list_4 costs time: 0.00999999 seconds.



0 0
原创粉丝点击