当前位置: 首页 > 后端技术 > Python

加速Python列表和字典,让你的代码更高效

时间:2023-03-26 16:40:38 Python

今天,我们将讨论Python中的优化技术。在本文中,您将学习如何通过避免列表和字典中的重新计算来加速您的代码。我们先写一个装饰器函数来计算函数的执行时间,方便测试不同代码的速度:):startTime=time.time()func(*args,**kwargs)elapsedTime=time.time()-startTimeprint('function-{},用了{}ms完成'.format(func.__name__,int(elapsedTime*1000)))返回newfunc以避免重新计算列表中循环内的代码:@timeitdefappend_inside_loop(limit):nums=[]fornuminlimit:nums.append(num)append_inside_loop(list(range(1,9999999)))in在上面的函数中,.append每次循环都会重新计算函数引用。执行完后,上面函数总共花费的时间:o/p-function-append_inside_loop,take529mstocomplete循环外代码:@timeitdefappend_outside_loop(limit):nums=[]append=nums.appendfornuminlimit:append(num)append_outside_loop(list(range(1,9999999)))在上面的函数中,我们在循环外评估nums.append并在循环内使用append作为变量。总时间:o/p-函数-append_outside_loop,完成耗时328毫秒如您所见,当我们在for循环外附加一个局部变量时,这花费的时间要少得多,使代码加速了201毫秒。避免在字典中重新求值循环内的代码:@timeitdefinside_evaluation(limit):data={}fornuminlimit:data[num]=data.get(num,0)+1inside_evaluation(list(range(1,9999999)))上述函数花费的总时间:o/p-函数-inside_evaluation,花费1400毫秒完成循环外代码:@timeitdefoutside_evaluation(limit):data={}get=data.getfornuminlimit:data[num]=get(num,0)+1outside_evaluation(list(range(1,9999999)))以上函数花费的总时间:o/p-函数-outside_evaluation,花费1189毫秒完成你问看,我们这里的代码快了211毫秒。英文原文:https://dev.to/sharmapacific/...本文仅供学习,版权归原作者所有。如有侵权,请联系删除。学习Python的路上肯定会遇到困难,不要慌张,我这里有一套学习资料,包括40+电子书,800+教学视频,涉及Python基础、爬虫、框架、数据分析、机学习等等,别怕你学不会!https://shimo.im/docs/JWCghr8...《Python学习资料》关注公众号【蟒圈】,每日优质文章推送。