list类型数据执行效率测试

测试代码如下

from timeit import Timer


def fun1():
    a = []
    for i in range(10000):
        li = [i]
        a = a + li


def fun2():
    a = [i for i in range(10000)]


def fun3():
    a = []
    for i in range(10000):
        a.append(i)


def fun4():
    a = list(range(10000))


def fun5():
    a = []
    for i in range(10000):
        a.extend([i])


# fun1()
# fun2()
# fun3()
# fun4()
# fun5()

time1 = Timer("fun1()", "from __main__ import fun1")
print("time1:", time1.timeit(500))

time2 = Timer("fun2()", "from __main__ import fun2")
print("time2:", time2.timeit(500))

time3 = Timer("fun3()", "from __main__ import fun3")
print("time3:", time3.timeit(500))

time4 = Timer("fun4()", "from __main__ import fun4")
print("time4:", time4.timeit(500))

time5 = Timer("fun5()", "from __main__ import fun5")
print("time5:", time5.timeit(500))

执行结果如下,可以发现第一种两个列表相加的方式最慢,其他几种时间差不多:

再对比下append和insert方法的效率:

def fun6():
    a = []
    for i in range(10000):
        a.append(i)


def fun7():
    a = []
    for i in range(10000):
        # 插入到头部
        a.insert(0, i)


def fun8():
    a = []
    for i in range(10000):
        # 插入到尾部
        a.insert(-1, i)


time6 = Timer("fun6()", "from __main__ import fun6")
print("time6:", time6.timeit(500))

time7 = Timer("fun7()", "from __main__ import fun7")
print("time7:", time7.timeit(500))

time8 = Timer("fun8()", "from __main__ import fun8")
print("time8:", time8.timeit(500))

执行结果,插入到头部需要更新列表中后面所有数据的位置,所以最耗时:

原文地址:https://www.cnblogs.com/canghai1024/p/13807265.html