1-06python列表类型不同操作的时间效率



timeit模块

timeit模块可以用来测试一小段Python代码的执行速度。

class timeit.Timer(stmt='pass', setup='pass', timer=<timer function>)

Timer是测量小段代码执行速度的类。

stmt参数是要测试的代码语句(statment);

setup参数是运行代码时需要的设置;

timer参数是一个定时器函数,与平台有关。

timeit.Timer.timeit(number=1000000)

Timer类中测试语句执行速度的对象方法。number参数是测试代码时的测试次数,默认为1000000次。方法返回执行代码的平均耗时,一个float类型的秒数。

list的操作测试-列表的相加、列表生成器、直接变成列表、用append函数、用extend函数

import timeit
from timeit import Timer


# 思路
# # 第一种:列表的相加
# li1 = [1,2]
# li2 = [23,5]
# li = li1+li2
# # 第二种:列表生成器
# li = [i for i in range(10000)]
# # 第三种:直接变成列表
# li = list(range(10000))
# # 第四种:用append函数
# for i in range(10000):
# li.append(i)
# # 第五种:用extend函数
# for i in range(10000):
# li.extend([i])


# # 第一种:列表的相加
def test1():
    li = []
    for i in range(10000):
        li += [i]


# # 第二种:列表生成器
def test2():
    li = [i for i in range(10000)]


# # 第三种:直接变成列表
def test3():
    li = list(range(10000))


# # 第四种:用append函数
def test4():
    li = []
    for i in range(10000):
        li.append(i)


# # 第五种:用extend函数
def test5():
    li = []
    for i in range(10000):
        li.extend([i])


# 测试第1个
timer1 = Timer("test1()", "from __main__ import test1")
# timer1.timeit(1000)
print("列表的相加:", timer1.timeit(1000))

# 测试第2个
timer2 = Timer("test2()", "from __main__ import test2")
# timer2.timeit(1000)
print("列表生成器:", timer2.timeit(1000))

# 测试第3个
timer3 = Timer("test3()", "from __main__ import test3")
# timer3.timeit(1000)
print("直接变成列表:", timer3.timeit(1000))

# 测试第4个
timer4 = Timer("test4()", "from __main__ import test4")
# timer4.timeit(1000)
print("用append函数:", timer4.timeit(1000))

# 测试第5个
timer5 = Timer("test5()", "from __main__ import test5")
# timer5.timeit(1000)
print("用extend函数:", timer5.timeit(1000))

测试列表的相加、列表生成器、直接变成列表、用append函数、用extend函数的效率的结果

测试append和insert列表操作的时间效率

代码:

import timeit
from timeit import Timer

def test6():
    li = []
    for i in range(10000):
        li.append(i)#始终从列表尾部追加
def test7():
    li = []
    for i in range(10000):
        li.insert(0,i)#0表示始终从列表头部追加上i的值

# 测试始终从列表尾部追加的append(i)
timer6 = Timer("test6()", "from __main__ import test6")
print("始终从列表尾部追加的append(i):", timer6.timeit(1000))

# 测试始终从列表头部追加的insert(0,i)
timer7 = Timer("test7()", "from __main__ import test7")
print("始终从列表头部追加的insert(0,i):", timer7.timeit(1000))

结果:

由于数据的存储方式!!!数据结构中会说到

list内置操作的时间复杂度

list操作

dict内置操作的时间复杂度

dict操作