今天,我们将讨论Python中的优化技巧。在本文中,您将学习如何通过避免列表和字典中的重新计算来加速您的代码。我们先写一个装饰器函数来计算函数的执行时间,方便测试不同代码的速度:time.time()func(*args,**kwargs)elapsedTime=time.time()-startTimeprint('function-{},took{}mstocomplete'.format(func.__name__,int(elapsedTime*1000)))returnnewfunc重新计算列表中的1。循环内代码:@timeitdefappend_inside_loop(limit):nums=[]fornuminlimit:nums.append(num)append_inside_loop(list(range(1,9999999)))在上面的function.append中每次通过循环重新计算函数引用。执行后,上面函数总耗时:o/p-function-append_inside_loop,take529mstocomplete2。循环外的代码:@timeitdefappend_outside_loop(limit):nums=[]append=nums.appendfornuminlimit:append(num)append_outside_loop(list(range(1,9999999)))在上面的函数中,我们在循环外计算nums.append并将append用作循环内的变量。总时间:o/p-function-append_outside_loop,take328mstocomplete如您所见,当我们在for循环外追加一个局部变量时,这花费的时间少得多,使代码加速了201毫秒。2.避免在字典中重新求值1.循环内代码:@timeitdefinside_evaluation(limit):data={}fornuminlimit:da??ta[num]=data.get(num,0)+1inside_evaluation(list(range(1,9999999)))上述函数所花费的总时间:o/p-function-inside_evaluation,take1400mstocomplete2.循环外的代码:@timeitdefoutside_evaluation(limit):data={}get=data.getfornuminlimit:da??ta[num]=get(num,0)+1outside_evaluation(list(range(1,9999999)))总耗时上面的函数:o/p-function-outside_evaluation,用了1189ms完成如你所见,我们这里的代码快了211ms。英文原文:https://dev.to/sharmapacific/speedup-python-list-and-dictionary-12kd
