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

系统运维2025-11-05 13:57:057

 介绍

今天,何加我们将讨论Python中的表和优化技术。在本文中,字典您将了解如何通过避免在列表和字典中进行重新计算来加快代码的代码速度。

我们先编写一个装饰器函数来计算函数的更加高效执行时间,方便测验不同代码的何加速度:

import functools import time def timeit(func):     @functools.wraps(func)     def newfunc(*args, **kwargs):         startTime = time.time()         func(*args, **kwargs)         elapsedTime = time.time() - startTime         print(function - {}, took {} ms to complete.format(func.__name__, int(elapsedTime * 1000)))     return newfunc 

避免在列表中重新评估

在循环内

代码:

@timeit def append_inside_loop(limit):     nums = []     for num in limit:         nums.append(num) append_inside_loop(list(range(1, 9999999))) 

在上面的源码库函数中.append每次通过循环重新计算的函数引用。执行后,表和上述函数所花费的字典总时间:

o/p - function - append_inside_loop, took 529 ms to complete 

在循环外

代码:

@timeit def append_outside_loop(limit):     nums = []     append = nums.append     for num in limit:         append(num) append_outside_loop(list(range(1, 9999999))) 

在上面的函数中,我们对nums.append在循环外部估值,代码并在循环内部使用append为变量。更加高效总时间:

o/p - function - append_outside_loop,何加 took 328 ms to complete 

如您所见,服务器租用当我们在​for循环外部追加为一个本地变量,表和这将花费更少的字典时间,可以将代码加速201 ms。代码​

避免在字典中重新求值

在循环内部

代码:

@timeit def inside_evaluation(limit):     data = {}     for num in limit:         data[num] = data.get(num,更加高效 0) + 1 inside_evaluation(list(range(1, 9999999))) 

上述函数所花费的总时间:

o/p - function - inside_evaluation, took 1400 ms to complete 

在循环外

代码:

@timeit def outside_evaluation(limit):     data = {}     get = data.get     for num in limit:         data[num] = get(num, 0) + 1 outside_evaluation(list(range(1, 9999999))) 

上述函数所花费的总时间:

o/p - function - outside_evaluation, took 1189 ms to complete 

如你所见,我们这里的代码速度提高了211毫秒。云南idc服务商

本文地址:http://www.bhae.cn/news/163b21099626.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

全站热门

我们在Linux中编程的时候,有时候会发现,用户名太长了真不好。特别是虚拟机小窗口显示的时候,前面的路径一个个加在一起,结果路径就变得好长。这样我们的命令没敲几个就要换行,很麻烦,那么怎么将Linux的用户名改短一下呢?1、我们直接在当前用户下,用usermod,发现会出错,如下:2、显示的错误是:用户hujinjin当前正在使用。3、我们将当前hujinjin用户注销,再用其他的用户来登录,再切换到root用户,再来执行修改用户名的操作,如下图:4、可知修改成功了,不过,我的hjj用户的主目录的文件夹的名字还是hujinjin,并没有改为hjj。我们想要的效果还是没有达到,我们尝试将hujinjin文件夹改名为hjj,文件夹改名后.但是问题出现了,现在找不到hjj用户的家目录,那么我们只有将系统中存储的hjj的主目录由hujinjin改为hjj.修改前如下:5、修改后,如下:6、修改完成后,我们在root用户下切换到hjj用户,发现能够正常切换到用户主目录了,如下:7、修改完成!

LAMP环境下Apache + SSL Howto译文

Pandas Query 方法深度总结,你学会了吗?

开源CasaOS云软件发现关键漏洞

探索刷机精灵的刷机方式(了解刷机精灵的操作步骤和注意事项)

分库分表实战:幸福的烦恼—流量大爆发啦!

不可不知的 MySQL 升级利器及 5.7 升级到 8.0 的注意事项

Akamai 报告:亚太地区及日本尚未做好抵御网络威胁的准备

热门文章

友情链接

滇ICP备2023000592号-9