优雅你的Python代码的15个tips

栏目: Python · 发布时间: 5年前

内容简介:前言:师妹前段时间非常认真地选了下学期的《大数据分析实践》选修课,根据几位师兄的建议买了本书开始自学 Python 语言。然而年后再见,师妹说她看完了书,做了一些习题,但并不觉得 Python 有啥吸引人的地方,对这门语言的激情也就大不如前。

优雅你的 <a href='https://www.codercto.com/topics/20097.html'>Python</a> 代码的15个tips

作者:迷途书童coding     来源:迷途书童小陋室

前言:师妹前段时间非常认真地选了下学期的《大数据分析实践》选修课,根据几位师兄的建议买了本书开始自学 Python 语言。然而年后再见,师妹说她看完了书,做了一些习题,但并不觉得 Python 有啥吸引人的地方,对这门语言的激情也就大不如前。

起初笔者很疑惑为什么师妹会有这样的感受,直到看到了师妹写的 Python 代码,才明白了症结所在——师妹一直在用类似 C/C++ 语言的习惯写 Python 代码,而没有利用 Python 语言本身的特性,写的代码和以前的代码差不多冗长,开发效率并没有明显提高。因此自然不觉得 Python 有啥特别之处,也就失去了兴趣。

笔者指出了问题,接着对着师妹的代码,刷刷刷改了起来。不一会儿就将原代码量缩短了几乎一半。看着简洁、直观、自带注释属性的新代码,师妹重新燃起了学习的热情。在她的要求下,笔者整理了如下的15条经验,供大家参考和学习。

文章全文约2000字,共有15个程序样例片段。

测试环境为:python版本 3.7.0 / 操作系统window 7 64位;

Python 环境下,在开始编码之前,输入 importthis ,可以看到 Python 为我们准备的彩蛋——

部分内容简单翻译为:

这就是著名的“Python之禅“。这几句内置的最正确的“废话“,体现了 Python 语言对于简洁与优美的追求。

在 Python 社区,程序员还创造了一个新词 Pythonic 来评价代码是否符合 Python 风格,并以写出 Pythonic 风格的代码而自豪。笔者初次看到这个单词时,首先想到的是日本鼎盛时期的代表企业,索尼和松下公司(Sony,Panasonic),进而联想起90年代这些公司极致、创新的产品和其所代表的精益求精的匠人精神。

扯远了,回到正题。笔者想表达的是,通过熟悉 Python 语言的一些基本特性,加以熟练应用,你也可以写出很 Pythonic 的代码!

话不多说,本文通过15个具体的例子,带你领略 Python 的简洁和优雅。

下文中'P'即表示'Pythonic',很 Python 的写法,'NP'也就是相反,不是很'Pythonic'的写法。

1、为多个变量赋值

2、变量值互换

上面的例子通过了元组的pack和unpack完成了对a,b的互换,避免了使用临时变量temp,而且只用了一行代码。

3、链式比较

后者的写法更接近数学表达式。

4、any/all函数

anyallPython 的内置函数。对于 any 函数,可迭代参数的任何一个元素为真就返回 True ,否则返回 False 。对于 all 函数,如果可迭代参数的所有元素为真(或迭代器为空),返回 True ,否则返回 False

5、用in代替or简化判断

同样是多重判断问题,判断某个变量是否为多个可能取值之一

6、if/else 三目运算

后者的写法简单易懂,仅需一行代码就完成了常规写法4行代码的功能。

7、字符串列表的连接

使用 join 方法可以指定间隔字符(串)将字符串列表合并成一个字符串。

8、匹配字符串开头/结尾

9、列表推导式

从列表中找出符合条件的元素组成新的列表

可以结合上面两条tips,可以实现快速找出文件夹下指定类型的文件,例如:

10、使用zip同步处理多个列表

当想要对多个列表对应的元素进行操作时

zip(a,b) 会生成一个可返回元组 (x,y) 的迭代器,其中x来自a,y来自b。 一旦其中某个序列到底结尾,迭代宣告结束。 因此迭代长度跟参数中最短序列长度一致。

11、列表去重

12、文件打开与关闭/上下文管理

with 关键字实现了上下文管理器,是一种更简洁也更安全的操作方法。上例中当离开 with 代码块的时候,系统会自动调用 fp.close() 方法关闭文件, 哪怕中间遇到异常,close 方法也会被调用。

13、Enumerate

枚举函数,用于枚举可迭代对象,并且同时返回元素的下标索引值。

如果你想在迭代一个序列的同时,得到被处理元素的索引下标。内置的 enumerate() 函数可以很好的解决这个问题:

14、对齐字符串

有时,你想通过某种对齐方式来格式化字符串,输出一些提示信息

类似地,想让字符串左对齐或者右对齐,可以用 .ljust(50, '-') 或 rjust(50, '-')

15、解包

解压列表/元祖的元素,赋值给不同的变量

如果想解包一个长列表,只得到其中部分元素,例如第一个和最后一个元素:

该例子中,除了头、尾元素之外,中间不受关注的元素作为一个子列表全部赋值给了 mid 。

专注于数据科学领域的知识分享

欢迎在文章下方留言与交流

推荐阅读

李航大佬《统计学习方法》第二版上线!增加无监督学习!

8 行代码用Python画一个中国地图

如何使用Python玩转PDF各种骚操作?

嫌pandas慢又不想改代码怎么办?来试试Modin

Facebook工程师:如何从工程的角度系统掌握Python?

优雅你的Python代码的15个tips


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法时代

算法时代

Luke Dormehl / 胡小锐、钟毅 / 中信出版集团 / 2016-4-1 / CNY 59.00

世界上的一切事物都可以被简化成一个公式吗?数字可以告诉我们谁是适合我们的另一半,而且能和我们白头偕老吗?算法可以准确预测电影的票房收入,并且让电影更卖座吗?程序软件能预知谁将要实施犯罪,并且精确到案发时间吗?这些事听起来都像是科幻小说中的情节,但事实上,它们仅是日益被算法主宰的人类世界的“冰山一角”。 近年来随着大数据技术的快速发展,我们正在进入“算法经济时代”。每天,算法都会对展示在我们眼......一起来看看 《算法时代》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具