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

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


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


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


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


01.招数一

在列表里面计数

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

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



02.招数二 

过滤一个列表

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

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


03.招数三

善用异常,事半功倍

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

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


04.招数四

列表成员检查

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

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


05.招数五

去重

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

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


06.招数六

列表的排序

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

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


07.招数七

把迭代循环放到函数里面

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

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


08.招数八

检查是否为True

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

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


09.招数九

检查列表是否为空

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

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


10.最后一招

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

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



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


趣味学Python训练营

跟887人一起实战玩Python

现价68元

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

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


往期趣味实战训练营:

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

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

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

4).用Python爬取小密圈

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


近期热门:

小密圈人气很高的两个实战项目


获取干货源码,阅读更多有趣的案例,也可以直接去微信公众号【菜鸟学Python】获取。
菜鸟学Python » 漫画,假装自己是Python高手,学会这十招就可以