0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

可以节省Python执行时间的四种方式

马哥Linux运维 来源:马哥Linux运维 作者:子沐爱扫地 2022-05-13 17:01 次阅读

今天我想和大家分享 4 个省时的 Python 技巧,可以节省 10~20% 的 Python 执行时间。

反转列表

Python 中通常有两种反转列表的方法:切片或 reverse() 函数调用。这两种方法都可以反转列表,但需要注意的是内置函数 reverse() 会更改原始列表,而切片方法会创建一个新列表。

但是他们的表现呢?哪种方式更有效?让我们看一下下面的例子:

使用切片:

$python-mtimeit-n1000000-s'importnumpyasnp''mylist=list(np.arange(0,200))''mylist[::-1]'
1000000loops,bestof5:15.6usecperloop

使用 reverse():

$python-mtimeit-n1000000-s'importnumpyasnp''mylist=list(np.arange(0,200))''mylist.reverse()'
1000000loops,bestof5:10.7usecperloop

这两种方法都可以反转列表,但需要注意的是内置函数 reverse() 会更改原始列表,而切片方法会创建一个新列表。

显然,内置函数 reverse() 比列表切片方法更快!

交换两个值

用一行代码交换两个变量值是一种更具有 Python 风格的方法。

与其他编程语言不同,Python 不需要使用临时变量来交换两个数字或值。举个简单的例子:

variable_1=100
variable_2=500

要交换 variable_1variable_2 的值,只需要一行代码。

variable_1,variable_2=variable_2,variable_1

您也可以对字典使用相同的技巧:

md[key_2],md[key_1]=md[key_1],md[key_2]

该技巧可以避免多次迭代和复杂的数据转换,从而减少执行时间。

在函数内部循环

我们都喜欢创建自定义函数来执行我们自己的特定任务。然后使用 for 循环遍历这些函数,多次重复该任务。

但是,在 for 循环中使用函数需要更长的执行时间,因为每次迭代都会调用该函数。

相反,如果在函数内部实现了 for 循环,则该函数只会被调用一次。

为了更清楚地解释,让我们举个例子!

首先创建一个简单的字符串列表:

list_of_strings=['apple','orange','banana','pineapple','grape']

创建两个函数,函数内部和外部都有 for 循环,从简单的开始。

defonly_function(x):
new_string=x.capitalize()
out_putstring=x+""+new_string
print(output_string)

和一个带有循环的 for 函数:

deffor_in_function(listofstrings):
forxinlist_of_strings:
new_string=x.capitalize()
output_string=x+""+new_string
print(output_string)

显然,这两个函数的输出是一样的。

然后,让我们比较一下,哪个更快?

b2d9a392-cae8-11ec-bce3-dac502259ad0.png

如您所见,在函数内使用 for 循环会稍微快一些。

减少函数调用次数

判断对象的类型时,使用 isinstance() 最好,其次是对象类型标识 id(),对象值 type() 最后。

#Checkifnumaninttype
type(num)==type(0)#Threefunctioncalls
type(num)istype(0)#Twofunctioncalls
isinstance(num,(int))#Onefunctioncall

不要将重复操作的内容作为参数放在循环条件中,避免重复操作。

#Eachloopthelen(a)willbecalled
whilei< len(a):
    statement
#Onlyexecutelen(a)once
m=len(a)
whilei< m:
    statement

要在模块 X 中使用函数或对象 Y,请直接使用 from X import Y 而不是 import X; then X.Y。这减少了使用 Y 时的一次查找(解释器不必先查找 X 模块,然后在 X 模块的字典中查找 Y)。

总而言之,你可以大量使用 Python 的内置函数。提高 Python 程序的速度,同时保持代码简洁易懂。

如果想进一步了解 Python 的内置函数,可以参考下表,或查看以下网站(https://docs.python.org/3/library/functions.html):

b303a9da-cae8-11ec-bce3-dac502259ad0.png

原文标题:Python 中 4 个高效的技巧!

文章出处:【微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    3866

    浏览量

    61308
  • 变量
    +关注

    关注

    0

    文章

    595

    浏览量

    28111
  • python
    +关注

    关注

    51

    文章

    4674

    浏览量

    83464

原文标题:Python 中 4 个高效的技巧!

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    LabVIEW 程序执行架构——程序执行时间控制

    (4294967295),所以一定的时间后,数值就会从头开始计数。而计数的单位是毫秒 (ms)。通常我们会使用 Tick Count 元件来计算相对的间隔时间,如用来估算程序片段所需要的执行时间
    发表于 12-26 11:38

    【创龙TMS320C6748开发板试用】+代码执行时间测量及代码调试

    对代码执行时间的统计采用软件测量的方式。 在ccs中我们有许多方式进行代码执行时间的测量。以下介绍两
    发表于 11-13 13:28

    嵌套循环执行时间计算

    假如两层循环都要执行16369次,那么执行时间如何计算呢?当然里面不添加任何操作,里面的执行时间是最短,不过这样的意义不大。如果里面仅仅是一个赋值操作呢?int i =90
    发表于 12-30 15:24

    请问cla调试时,是不是不能采用Run -> clock -> show 这种方式测代码执行时间,那应该采用什么方式呢测代码执行时间呢?

    本帖最后由 一只耳朵怪 于 2018-6-14 09:58 编辑 请问cla调试时,是不是不能采用Run -> clock -> show 这种方式测代码执行时间,那应该采用什么方式呢测代码
    发表于 06-14 04:03

    如何计算执行时间

    嗨,大家好,有没有方法计算程序或程序的一部分(在两个断点之间)的执行时间?比如秒表之类的?我希望任何人都能帮上忙!抢劫 以上来自于百度翻译 以下为原文Hi all, Is there a way
    发表于 07-29 08:07

    如何在microblaze上测量C代码的执行时间

    如何在microblaze上测量C代码的执行时间?没有使用OS,所以我不能在time.h中使用桌面C函数,我是否必须使用xps计时器或axi计时器?任何人都可以使用xps计时器来测量执行时间吗?
    发表于 10-30 09:36

    C67系列执行时间可以估算吗?

    在不运行代码情况下,给定一段汇编代码能不能估计其执行时间,怎么估算?谢谢
    发表于 07-29 10:08

    如何使用CYCLECOUNTER快速的测量执行时间

    系统基于该寄存器实现了一个64位的循环周期计数器CYCLECOUNTER,能够精确的测量程序的执行时间,并且可以与C-SPY宏结合,成为开发人员非常有用的一个工具。CYCLECOUNTER的显示在IAR
    发表于 01-08 13:40

    如何在MCU上测量代码执行时间

    方式来显示实时变量,使用μC/Probe实时监控工具,它还提供了缩放能力,以易读的形式查看变量值。 使用μC/Probe显示测量值在应用中添加测量,监控个代码片段的执行时间,并通过μC/Probe显示
    发表于 07-16 09:59

    RT1052执行时间

    最近测试了下RT1052 的if判断语句执行时间。变量和0比较,用时在4ms。变量和其他非0数比较,用时8ms左右。这个正常么?各位道友。
    发表于 08-11 09:58

    RTThread Studio该如何查看代码执行时间

    想要查看代码执行时间,RTThread Studio下面应该如何操作?如何适应RTThread Studio查看某一段代码的执行时间
    发表于 09-20 14:30

    如何测量ARM Cortex-M MCU代码的执行时间

    期限(deadline)要求。测量部分代码的实际执行时间可以帮助我们找到代码中的时间关键点。 本文将展示如何轻松测量和显示基于Cortex-M MCU的代码片段的执行时间。 测量
    的头像 发表于 08-26 09:20 3092次阅读
    如何测量ARM Cortex-M MCU代码的<b class='flag-5'>执行时间</b>

    使用STM32定时器测量程序执行时间的方法详解

    口,假设默认情况下GPIO口置1;在需要测量的程序代码开始处将GPIO口清0,然后执行程序代码段,在代码段的终止处将GPIO口重新置1;示波器设置成边沿触发方式,抓取GPIO口从清0到重新置1的这段波形,然后用示波器卡出GPIO口下降沿到上升沿的这段
    的头像 发表于 01-17 15:11 6651次阅读
    使用STM32定时器测量程序<b class='flag-5'>执行时间</b>的方法详解

    TPT19新特性之最坏情况执行时间的指示

    在TPT 19中,首次有了最坏情况执行时间的早期预警系统——这已经在本地主机上用于测试执行。   基本原则:对每个测试步骤的执行时间进行测量。这使您可以快速轻松地确定哪些测试和哪些条件
    的头像 发表于 04-27 10:08 281次阅读
    TPT19新特性之最坏情况<b class='flag-5'>执行时间</b>的指示

    Python 优化—算出每条语句执行时间

    有很多原因,并不能全把锅甩到Python身上,我们应该首先从自己的代码上找原因,找原因最快的方法就是算出自己写的语句或函数的 执行时间 。这时候,很多人都会选择用以下的形式打印出语句的执行时间: 这是一种比较低效的做法,如果你有
    的头像 发表于 11-03 11:01 250次阅读
    <b class='flag-5'>Python</b> 优化—算出每条语句<b class='flag-5'>执行时间</b>