热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python性能训练_漫画,假装自己是Python高手,学会这十招就可以

原标题:漫画,假装自己是Python高手,学会这十招就可以Python是一门简单易学,而且功能非常强大的语言,

原标题:漫画,假装自己是Python高手,学会这十招就可以

Python是一门简单易学,而且功能非常强大的语言,目前是火的一大糊涂,据说除了生孩子啥都干。但是Python有一个很致命的问题就是慢,看下面两个人都吵起来:

01.招数一

在列表里面计数

性能:第二种计数方法比第一种快6290倍,为啥因为Python原生的内置函数都是优化过的,所以能用原生的计算的时候,尽量用原生的函数来计算。

02.招数二

过滤一个列表

性能:第二种方法比第一种慢近50%,有人可能觉得filter应该会快一些,其实filter增加了复杂度,返回一个迭代对象再用list转化为一个列表,所以开销大一些。其实最快是推导列表,比第一种性能提高近30%。

03.招数三

善用异常,事半功倍

性能:第二种比第一种快了近3倍,简单粗暴直接用异常,而第一种会通过内置函数hasattr来先检查,查找内部类的属性,增加了开销。

04.招数四

列表成员检查

性能:第二种比第一种快了1倍,直接用in这样的方法检查列表内部成员比遍列要快很多的。当然如果你的num是在列表的头部,搜索会更快!

05.招数五

去重

性能:第二种比第一种快了近400倍,所以能用原生的内置的数据结构,一定要用原生的。不过相信大部分同学去重都开始用set了。

06.招数六

列表的排序

性能:第二种比第一种快了近6倍,sorted函数会把原来的列表进行排序然后再返回一个新的列表,而sort函数直接再原来的列表上面排序,节省了开销。

07.招数七

把迭代循环放到函数里面

性能:第二种要比第一种快了20%多,原因是因为把重复的循环直接放到了一次性的塞入函数,要把你调用1000次函数开销小很多。

08.招数八

检查是否为True

性能:最快的是第三种(直接用if)比第一种快了60%,不需要用借助==和is来进行判断。因为==会调用内置的魔法函数__eq__来比较左右两边的类型,而直接用if来判断var是否为空,None,空的列表,字典会快很多。

09.招数九

检查列表是否为空

性能:第三种最快,第三种比第一种快了3倍;其实大部人新手都喜欢用len来判断,其实我也是,这个习惯要改。

10.最后一招

性能:没有对比没有伤害,因为Python一切皆对象,所以当你用list()生成一个对象的时候会产生开销,而[]直接返回一个list,会快很多,同理dict也是一样的。

大家可以反思一下自己的代码里面有没有上面这几招的代码,回去优化一下,会对你的性能有很大的提高。或者菜鸟也可以直接背下来,面试的时候也许可以假装一把高手,觉得有道理的,留言吱一声。

趣味学Python训练营

跟887人一起实战玩Python

现价68元

(我们训练营的时间是从2018/10/14-2019/10/14,还有5个月的时间,其实越早加入越划算,差不多还有7-8次实战,算算每次也就8块钱)

往期趣味实战训练营:

1).用Python发送短信给你的朋友

2).用Python可视化分析2018年全年电影

3).用Python做一个图书比价系统

4).用Python爬取小密圈

5).用Python做股票提醒系统

近期热门:

小密圈人气很高的两个实战项目返回搜狐,查看更多

责任编辑:



推荐阅读
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • 006_Redis的List数据类型
    1.List类型是一个链表结构的集合,主要功能有push,pop,获取元素等。List类型是一个双端链表的结构,我们可以通过相关操作进行集合的头部或者尾部添加删除元素,List的设 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有