Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >翻译 | 更快的Python(一)

翻译 | 更快的Python(一)

作者头像
simpleapples
发布于 2018-10-18 06:54:44
发布于 2018-10-18 06:54:44
6330
举报
文章被收录于专栏:Python私房菜Python私房菜

更快的Python使用代码示例来说明如何书写Python代码能带来更高的性能。本文对代码进行了讲解,从性能和可读性等角度来选择出最适合的写法。

01

字符串格式化

- 最差/最优时间比:**1.95**

- 使用建议:Python 3.7或以上推荐使用f-string,其他版本推荐使用format方法。

- 说明:字符串格式化是代码中最常遇到的情况,虽然在连接少量字符串的情景中,使用+号的性能最优,但是使用+号的代码可读性最差。如果使用Python 3.7或优以上版本,可以使用f-string来解决这个问题,f-string的性能比format方法和%操作符的性能都要高,可读性也比+号好。

02

字典的初始化

- 最差/最优时间比:**1.83**

- 使用建议:使用字面量初始化字典(以及其他集合类型)。

- 说明:Python中初始化集合类型时使用字面量的方式,解释器会直接调用BUILD_MAP等字节码来创建,如果用构造函数的方式来创建,则需要先查询构造方法,再执行构造方法。使用字面量初始化,Python代码也更简洁。

03

内置排序方法

- 最差/最优时间比:**1.26**

- 使用建议:根据是否需要修改原始值来决定使用哪个方法。

- 说明:sorted和list.sort方法是Python中内置的排序方法,sorted方法不会修改原始值,list.sort方法在原始值上直接排序,会修改原始值。比较这两个方法的性能差异,意义不大。

04

初始化多个变量

- 最差/最优时间比:**1.01**

- 使用建议:推荐使用第二种。

- 说明:从字节码中可以看出两种方式出了执行顺序之外,基本一致,所以性能上也非常接近。

05

多个变量的比较

- 最差/最优时间比:**1.11**

- 使用建议:推荐使用第二种。

- 说明:使用第一种方法能带来一定的性能提升,但是提升有限,在实际情况中也很少出现多个变量连续比较大小的情况,并且第一种方法非常不Pythonic,所以推荐使用第二种。

06

if true的条件判断

- 最差/最优时间比:**1.17**

- 使用建议:推荐使用第一种。

- 说明:从字节码上看,第一种方法的性能最高,并且语法上也更加简洁。

07

if false的条件判断

- 最差/最优时间比:**1.10**

- 使用建议:推荐使用第一种。

- 说明:从字节码上看,第一种方法的性能最高,语法角度上,if not写成第二种和第三种都是不推荐的。

08

判断list是否为空

- 最差/最优时间比:**1.55**

- 使用建议:根据具体需求,优先使用前两种。

- 说明:前两种代码性能更高,代码更简洁。同时,空列表a并不等于None,所以使用if a is None无法实现对空列表的判断。

09

判断object是否为空

- 最差/最优时间比:**1.00**

- 使用建议:根据具体需求,优先使用前两种。

- 说明:理由同上一个例子。

10

遍历可迭代对象

- 最差/最优时间比:**1.12**

- 使用建议:根据具体情况选择。

- 说明:两者性能差别不大,使用enumerate方法,可以不需要取对象的长度,可以直接获取到对象的index。

参考文章

Python Faster Way - http://pythonfasterway.org

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python私房菜 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
翻译 | 更快的Python(一)
更快的Python(Python Faster Way)使用代码示例来说明如何书写Python代码能带来更高的性能。本文对代码进行了讲解,从性能和可读性等角度来选择出最适合的写法。
一墨编程学习
2019/05/08
6850
翻译 | 更快的Python(一)
翻译 | 更快的Python(二)
更快的Python使用代码示例来说明如何书写Python代码能带来更高的性能。本文对代码进行了讲解,从性能和可读性等角度来选择出最适合的写法。
simpleapples
2018/12/06
7370
翻译 | 更快的Python(二) simpleapples
更快的Python(Python Faster Way)使用代码示例来说明如何书写Python代码能带来更高的性能。本文对代码进行了讲解,从性能和可读性等角度来选择出最适合的写法。
一墨编程学习
2019/05/08
5580
翻译 | 更快的Python(二) simpleapples
可能是最全面的 Python 字符串拼接总结
在 Python 中字符串连接有多种方式,这里简单做个总结,应该是比较全面的了,方便以后查阅。
小小科
2018/07/31
3120
这里是最全面的 python 字符串拼接总结,赶快收藏!
在 Python 中字符串连接有多种方式,这里简单做个总结,应该是比较全面的了,方便以后查阅。
猫咪编程
2018/07/26
9800
你所不知道的Python | 字符串连接的秘密
字符串连接,就是将2个或以上的字符串合并成一个,看上去连接字符串是一个非常基础的小问题,但是在Python中,我们可以用多种方式实现字符串的连接,稍有不慎就有可能因为选择不当而给程序带来性能损失。
simpleapples
2018/10/16
5790
你所不知道的Python | 字符串格式化的演进之路
字符串格式化对于每个语言来说都是一个非常基础和常用的功能,学习Python的同学大概都知道可以用%语法来格式化字符串。然而为了让我们更方便的使用这个常用功能,语言本身也在对字符串格式化方法进行迭代。
simpleapples
2018/10/16
5990
Python字符串格式化技巧
几乎每个使用不同编程语言编写的计算机程序中都有字符串。这种数据类型很常见,Python中有许多操作和格式化字符串的方法。今天分享几种优雅格式化字符串的方法。
TalkPython
2022/11/21
4920
Python 工匠:使用数字与字符串的技巧
序言 这是 “Python 工匠”系列的第 3 篇文章。 数字是几乎所有编程语言里最基本的数据类型,它是我们通过代码连接现实世界的基础。在 Python 里有三种数值类型:整型(int)、浮点型(float)和复数(complex)。绝大多数情况下,我们只需要和前两种打交道。 整型在 Python 中比较让人省心,因为它不区分有无符号并且永不溢出。但浮点型仍和绝大多数其他编程语言一样,依然有着精度问题,经常让很多刚进入编程世界大门的新人们感到困惑:"Why Are Floating Point Number
腾讯蓝鲸助手
2022/04/24
6450
Python中最快的格式化字符串方式
第一种是传承自C语言printf函数的使用%占位符格式化字符串,如'%d' % 100,这种方式严格来说是使用%作为算数运算符进行的二元运算,而且有一个限制是只能进行数字和字符串的格式化输出。
杜逸先
2018/08/29
2K0
Python 工匠:使用数字与字符串的技巧
数字是几乎所有编程语言里最基本的数据类型,它是我们通过代码连接现实世界的基础。在 Python 里有三种数值类型:整型(int)、浮点型(float)和复数(complex)。绝大多数情况下,我们只需要和前两种打交道。
用户2196567
2018/12/05
6720
Python学习入门到精通:字符串格式化
你应当注意到,字符串a当中有一些内容用了一些特殊表示形式,%s, %d ,这样做的目的是为了通过格式化字符串来填充这部分内容,以便于生成想要的字符串内容。
python学习教程
2020/02/14
4150
Python学习入门到精通:字符串格式化
Python 格式化字符串的最佳姿势
对于用 Python 处理数据和文本的同学一定经常要和字符串格式化打交道,少不了要打一堆 %。
Crossin先生
2020/02/24
1K0
Python 格式化字符串的最佳姿势
Python 3.8 即将到来,这是你需要关注的几大新特性
2018 年 6 月底,Python 3.7 问世,之后 Python 3.8 的开发和测试工作也已经展开。近日,Python 软件基金会公开了 3.80b2 的说明文档,向公众展示了 beta 版本的测试进展,以及 Python 3.8 版本的新特性和功能改进。
昱良
2019/07/19
3650
Python工匠:数字与字符串(上)
“ 编程某种意义上是一门『手艺』,因为优雅而高效的代码,就如同完美的手工艺品一样让人赏心悦目。 ” 致“匠人” 数字是几乎所有编程语言里最基本的数据类型,它是我们通过代码连接现实世界的基础。在 Python 里有三种数值类型:整型(int)、浮点型(float)和复数(complex)。绝大多数情况下,我们只需要和前两种打交道。 整型在 Python 中比较让人省心,因为它不区分有无符号并且永不溢出。但浮点型仍和绝大多数其他编程语言一样,依然有着精度问题,经常让很多刚进入编程世界大门的新人们感到困惑:"W
腾讯NEXT学位
2019/05/20
5940
Python工匠:数字与字符串(上)
Python全网最全基础课程笔记(十一)——字符串所有操作,跟着思维导图和图文来学习,爆肝2w字,无数代码案例!
请注意,title()方法在处理包含标点符号的字符串时,会将标点符号后面的第一个字母也转换为大写,这可能与某些预期不同。比如,在英文中,标点符号(如逗号、句号)后面通常跟随小写字母开始的单词,但title()方法会将这些字母也转换为大写。如果你需要更精细地控制大小写转换,可能需要根据具体情况编写自定义的函数来处理字符串。
小白的大数据之旅
2024/11/20
1290
Python全网最全基础课程笔记(十一)——字符串所有操作,跟着思维导图和图文来学习,爆肝2w字,无数代码案例!
Python 3.8 即将到来,这是你需要关注的几大新特性
从事计算机领域工作的读者朋友对 Python 编程语言应该非常熟悉了。这是一门广受好评的动态编程语言,其灵活和语法简易的特点使得这门语言在脚本工具、数据分析、Web 后端都有广泛的应用。Python 开发社区也非常活跃,3.x 的版本迭代速度非常快。2018 年 6 月底,Python 3.7 问世,之后 Python 3.8 的开发和测试工作也已经展开。近日,Python 软件基金会公开了 3.80b2 的说明文档,向公众展示了 beta 版本的测试进展,以及 Python 3.8 版本的新特性和功能改进。
Python数据科学
2019/07/19
3560
Python 3.8 即将到来,这是你需要关注的几大新特性
Python 格式化字符串,这个方法真的即丝滑又舒服!
按理说我应该对这种重复性的动作很烦,起初确实是这样,但是现在我乐在其中,为什么呢?肯定不是脑子坏了,因为我最近学会了一个超好用的格式化字符串的方法,那是相当的丝滑,所以我又迫不及待的来分享啦!
数据森麟
2020/02/20
3190
Python 格式化字符串,这个方法真的即丝滑又舒服!
Python 格式化字符串,这个方法真的即丝滑又舒服!
按理说我应该对这种重复性的动作很烦,起初确实是这样,但是现在我乐在其中,为什么呢?肯定不是脑子坏了,因为我最近学会了一个超好用的格式化字符串的方法,那是相当的丝滑,所以我又迫不及待的来分享啦!
AI算法与图像处理
2019/11/09
4700
Python 格式化字符串,这个方法真的即丝滑又舒服!
按理说我应该对这种重复性的动作很烦,起初确实是这样,但是现在我乐在其中,为什么呢?肯定不是脑子坏了,因为我最近学会了一个超好用的格式化字符串的方法,那是相当的丝滑,所以我又迫不及待的来分享啦!
编程文青李狗蛋
2019/11/07
3430
Python 格式化字符串,这个方法真的即丝滑又舒服!
推荐阅读
相关推荐
翻译 | 更快的Python(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文