算法:Python与时间复杂度

Python内置性能分析

函数是对基本操作的封装,不能直接将函数看为一个基本操作!

timeit模块

在这里插入图片描述

from timeit import Timer
Timer(stmt='pass', setup='pass', timer=<timer function>)
// stmt  : 要测试的代码语句,封装成函数
// 'pass': 字符串
// setup : 引入要测试的函数设置,因为测试需要在另外一个空间进行,
//          那个空间需要引入要测试的函数
// timer :  定时器,

测试:

# 这里直接导入了Timer这个类,如果用import timeit,则使用时要把Timer()换为timeit.Timer()
from timeit import Timer
# 进行列表的extend函数封装
def test_extend_time():
    li = []
    for i in range(10000):
        li.extend([i])

# 进行列表的相加操作函数封装
def test_add_time():
    li = []
    for i in range(10000):
        li = li + [i]

# 进行列表的append函数封装
def test_append_time():
    li = []
    for i in range(10000):
        li.append(i)

# 进行迭代器列表化 函数封装
def test_range_time():
    list(range(10000))

# 推导式
def test_for_time():
    [i for i in range(10000)]

# 获得测试结果
get_extend_timer = Timer('test_extend_time()', 'from __main__ import test_extend_time')
print('get_extend_timer: ', get_extend_timer.timeit(1000)) # 测试1000次


get_add_timer = Timer('test_add_time', 'from __main__ import test_add_time')
print('get_add_timer: ', get_add_timer.timeit(1000))

get_append_timer = Timer('test_append_time()', 'from __main__ import test_append_time')
print('get_append_timer: ', get_append_timer.timeit(1000))

get_range_timer = Timer('test_range_time', 'from __main__ import test_range_time')
print('get_range_timer: ', get_range_timer.timeit(1000))

get_for_timer = Timer('test_for_time', 'from __main__ import test_for_time')
print('get_for_timer: ', get_for_timer.timeit(1000))

#结果为:
get_extend_timer:  0.6593919
get_add_timer:  6.899999999920858e-06
get_append_timer:  0.47652039999999996
get_range_timer:  6.900000000031881e-06
get_for_timer:  6.799999999973494e-06

list内置操作的时间复杂度

在这里插入图片描述
例:pop(i)从最坏时间复杂度考虑,即删除头部元素,则整个列表元素前移,复杂度为n

dict内置函数复杂度

在这里插入图片描述
注:字典的无序性和键的唯一性。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值