Python作为2019年必备语言之一,展现了不可替代作用。对于所有的数据科学工作者,如何提高使用Python的效率,这里,总结了30种Python的最佳实践、技巧和窍门。希望这些可以帮助大家在2020年提高工作的效率,并且在此过程中学习到一些有用的东西。

1. 使用Python 3

Python官方宣布:从2020年1月1日起,正式不支持Python 2。本文有一堆的例子,只能在Python 3工作。如果你的版本还是Python 2.7版,赶紧升级到Python 3.x吧。

2.检查所需的最低Python版本

大家可以在代码中检查Python版本,以确保没有使用不兼容的版本运行脚本。使用以下简单检查:

import sys
# 检查python版本,如果是低于3.5就退出程序
def check_version():v = sys.version_info# print(v)  # sys.version_info(major=3, minor=6, micro=5, releaselevel='final', serial=0)if v.major == 3 and v.minor >= 5:returnprint('Your current python is %d.%d. Please use Python 3.6.' % (v.major, v.minor))exit(1)

3.使用IPython

IPython是一个增强的shell工具。可以进行代码自动补全,其实还有很多命令,我也喜欢内置的所有magic命令。比如:

  • %cd —更改当前工作目录

  • %edit —打开编辑器并在关闭编辑器后执行键入的代码

  • %env —显示当前环境变量

  • %pip install [pkgs] —在不离开交互式shell的情况下安装软件包

  • %time%timeit—定时执行Python代码

另一个有用的功能是引用先前命令的输出。输入和输出是实际对象。你可以通过使用Out[3]来使用第三个命令的输出。

使用以下命令安装IPython:

pip3 install ipython

4.列表(list)理解

列表(list)理解可以代替丑陋的for循环来填充列表。列表理解的基本语法为:[ expression for item in list if conditional ]

一个非常简单的示例,用数字序列填充列表:

[i for i in range(10)]

并且因为可以使用表达式,所以还可以进行一些数学运算,甚至调用外部函数。

最后,你可以使用if筛选列表。在这种情况下,我们仅保留可被2整除的值:

[i for i in range(10) if i%2==0]

5.检查对象的内存使用情况

使用sys.getsizeof(),你可以检查对象的内存使用情况。

6.返回多个值

Python中的函数可以返回多个变量,而无需字典,列表或类。

对于有限数量的返回值,这是可以的。但是超过3个值的任何内容都应放入类中。

7.使用data类

从Python 3.7版开始,Python提供data类。与常规类或其他替代方法(如返回多个值或字典)相比,它具有多个优点:

  • 数据类需要最少的代码

  • 你可以比较data类,因为它__eq__已为您实现

  • 你也可以轻松打印数据类以进行调试,因为它__repr__也已实现

  • data类需要类型提示,从而减少了发生错误的机会

8.就地变量交换

一项巧妙的小技巧,可以节省几行代码。

a,b = b,a

9.合并字典(Python 3.5+)

从Python 3.5开始,合并字典变得更加容易:

如果键(key)重叠,则第一个词典中的键(key)将被覆盖。

10.首字母大小写

使用capitalize()函数将字符串的首字母转为大写,其余变为小写。

"welcome".capitalize()

11.将字符串拆分为列表

你可以将字符串拆分为字符串列表。在这种情况下,我们分割空格字符:

list("welcome")

12.从字符串列表创建一个字符串

反之亦然,从上一个技巧开始,从列表中创建一个字符串,并在每个单词之间添加一个空格字符:

" ".join(['2','0','2','0'])

13.表情符号

这将使人印象深刻或被排斥,这取决于谁在寻找。更严重的是,这可以派上用场,尤其是在分析社交媒体数据时。

首先,安装表情符号模块:

pip3 install emoji

安装此程序后,您可以执行以下操作:

访问emoji库页面(https://pypi.org/project/emoji/)以获取更多示例和文档。

14.列表(list)切片

列表切片的基本语法是:a[start:stop:step]

startstopstep是可选的。如果不填写,则默认为:

  • 0为 start

  • 字符串的结尾 end

  • step默认为1

这里有些例子:

a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a[2:5:2]

15.反转字符串和列表

你可以从上方使用切片符号来反转字符串或列表。通过使用step=-1,将元素反转:

a[::-1]

16.展示小猫

我终于找到了一个很好的借口,可以在其中一篇文章中展示小猫了!但是,可能会使用它来显示图形等。首先,安装Pillow(https://pypi.org/project/Pillow/),它是Python图像库的一个分支:

pip3 install Pillow

现在,将该图像下载到一个名为“ kitchess.jpg”的文件中:

你可以直接从IPython进行操作:

Pillow不仅可以显示图像,还可以做更多的事情。它可以分析,调整大小,过滤,增强,变形等。有关所有功能,请参阅文档(https://pillow.readthedocs.io/en/stable/)。

17.使用map()

Python的内置函数之一称为map()map()的语法为:

map(function, something_iterable)

因此,你给它提供了要执行的功能以及要执行的某些功能。这可以是任何可迭代的事情。在下面的示例中,我将使用一个列表a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

list(map(lambda x: x+1,a))

看一下自己的代码,看看是否可以map()在某处使用而不是循环!

18.从列表或字符串中获取唯一元素

通过使用set()函数创建一个集合,你可以从列表或类似列表的对象中a=[1,1,2,3,4,4]获取所有唯一元素。

set(a)

19.查找最常出现的值

要在列表或字符串中查找最频繁出现的值:

test=[1,1,2,3,4,4,4,4]

您知道这为何有效吗?在继续阅读之前,请先自己弄清楚。您没有尝试,对吗?无论如何,我会告诉你:

  • max()将返回列表中的最大值。该key参数采用单个参数函数来自定义排序顺序,在本例中为test.count。该函数应用于迭代器上的每个项目。

  • test.count是list的内置函数。它接受一个参数,并将计算该参数的出现次数。因此test.count(1)将返回2,test.count(4)返回4。

  • set(test) 返回测试的所有唯一值,因此{1、2、3、4} 因此,我们在单行代码中所做的就是获取test的所有唯一值,即{1, 2, 3, 4}。接下来,max将list.count函数应用到它们并返回最大值。

20.创建一个进度条

你可以创建自己的进度条,这很有趣。但是使用进度包更快:

pip3 install progress

现在,你可以轻松创建进度条。

以下动画演示了所有可用的进度类型(动画显示可查看官网):

21.在交互式shell使用_

你可以使用下划线运算符获取最后一个表达式的结果,例如在IPython中,它看起来像:

In [1]: 3 * 3
Out[1]: 9
In [2]: _ + 3
Out[2]: 12

这也可以在Python Shell中使用。此外,IPython shell允许使用Out[n]来获得表达式在In [n]中的值例如,Out[1]在上面的示例中,_可以得到数字9。

22.快速创建Web服务器

你可以快速启动Web服务器,以提供当前目录的内容:

python3 -m http.server

如果你想与同事共享一些东西或想要测试一个简单的HTML网站,这将很有用。

23.多行字符串

尽管可以在代码中使用三引号将多行字符串包括在内,但这并不理想。放在三引号之间的所有内容都将成为字符串,包括格式,如下所示。我更喜欢第二种方法,该方法将多行连接在一起,可以很好地格式化代码。唯一的缺点是你需要显式添加换行符。

24.三元运算符,用于条件赋值

这是使代码更简洁同时又保持可读性的另一种方法:

[on_true] if [expression] else [on_false]

举个例子:

x = "Success!" if (y == 2) else "Failed!"

25.计数

您可以使用集合库中的Counter来获取包含列表中所有唯一元素计数的字典:

from collections import Counter
a=[1, 1, 2, 3, 4, 4]
Counter(a)

26.比较运算符的链接

您可以在Python中链接比较运算符,以创建更易读和简洁的代码:

27.添加一些颜色

使用Colorama(https://pypi.org/project/colorama/),你可以为终端添加一些颜色。

28.处理日期

python-dateutil模块(https://pypi.org/project/python-dateutil/)提供了对标准datetime模块的强大扩展。通过以下方式安装:

pip3 install python-dateutil

你可以用这个库做很多很酷的事情。我将把示例限制在我认为特别有用的一个:日志文件中日期的模糊解析等。

只需记住:常规的Python日期时间功能在哪里结束,python-dateutil就出现了!

29.整数除法

在Python 2中,除法运算符(/)默认为整数除法,除非操作数之一是浮点数。因此,你有以下行为:

#Python 2
5/2 = 2
5 / 2.0 = 2.5

在Python 3中,除法运算符默认为浮点除法,并且//运算符已成为整数除法。这样我们得到:

#Python 3
5/2 = 2.5
5 // 2 = 2

有关此更改背后的全部动机,您应该阅读PEP-0238(https://www.python.org/dev/peps/pep-0238/)。

30.使用chardet进行字符集检测

您可以使用chardet模块来检测文件的字符集。在分析大量随机文本时,这很有用。安装方式:

pip install chardet

现在你有了一个名为chardetect的额外命令行工具,它可以像这样使用

chardetect somefile.txt
somefile.txt: ascii with confidence 1.0

你还可以通过编程方式使用该库,请查阅docs(https://chardet.readthedocs.io/en/latest/usage.html)。

新的一年开始的30条Python技巧和窍门。我希望大家喜欢它们。如果有任何问题,请随时发表评论!

参考: https://towardsdatascience.com/30-python-best-practices-tips-and-tricks-caefb9f8c5f5

备注:公众号菜单包含了整理了一本AI小抄非常适合在通勤路上用学习

往期精彩回顾2019年公众号文章精选适合初学者入门人工智能的路线及资料下载机器学习在线手册深度学习在线手册AI基础下载(第一部分)备注:加入本站微信群或者qq群,请回复“加群”加入知识星球(4500+用户,ID:92416895),请回复“知识星球”

喜欢文章,点个在看

玩转Python? 一文总结30种Python的窍门和技巧!相关推荐

  1. 玩转Python? 一文总结30种Python的窍门和技巧,不可错过哈!

    Python作为2020年必备语言之一,展现了不可替代作用.对于所有的数据科学工作者,如何提高使用Python的效率,这里,总结了30种Python的最佳实践.技巧和窍门.希望这些可以帮助大家在202 ...

  2. python第三方库排行-140种Python标准库、第三方库和外部工具

    导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连 ...

  3. python主要就业方向-四种Python高薪就业方向

    前言: Python使用范围很广泛,一个人精力有限,不可能精通所有的领域.就拿Python官网的Python应用领域来说,Python有以下几个方面的应用: Web Programming:Djang ...

  4. python爬虫框架排行榜-哪种Python框架适合你?简单介绍几种主流Python框架

    众所周知,Python开发框架大大减少了开发者不必要的重复劳动,提高了项目开发效率的同时,还使得创建的程序更加稳定.目前比较主流的Python框架都有哪些呢?一般大家用的比较多的是Django.Fla ...

  5. python编程制作_一种Python编程创作平台的制作方法

    本发明涉及在线浏览器技术领域,特别涉及一种Python编程创作平台. 背景技术: 目前项目整体使用javascript+html+css实现,用户界面编写上使用react框架.具体实现上是将pytho ...

  6. python最简单单例模式_5种Python单例模式的实现方式

    本文为大家分享了Python创建单例模式的5种常用方法,供大家参考,具体内容如下 所谓单例,是指一个类的实例从始至终只能被创建一次. 方法1: 如果想使得某个类从始至终最多只有一个实例,使用__new ...

  7. python优化算法工具包_12种Python 机器学习 数据挖掘工具包,一定让你受益匪浅...

    作为一种解释型语言,Python的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词).相比于C++或Java,Python让开发者能够用更少的代码表达想法. ...

  8. 价值1000元的Python原创文档,涉及“Python基础“、“Python自动化“等,免费分享!

    感谢您来到,黄同学的<原创作品>所在地,这里将会给大家分享很多实在的干货文档,供大家学习. 这四个文档分别是:<Python自动化办公手册>.<Excel数据透视表大全手 ...

  9. python文本分析库_8种Python文本处理工具集

    文本处理一般包括词性标注,句法分析,关键词提取,文本分类,情感分析等等,这是针对中文的,如果是对于英文来说,只需要基本的tokenize.本文为大家提供了以下这些工具包. 1.Jieba [结巴中文分 ...

最新文章

  1. Ubuntu 16.04 安装Django
  2. python 进程池 freeze_support_Python 多进程并发操作中进程池Pool的实例
  3. curl取跳转地址 php_用PHP如何实现解析抖音无水印视频
  4. v8学习笔记(五) 编译过程
  5. Android 游戏开发 View框架
  6. linux rar命令没找到,Linux没有rar解压命令
  7. 操作系统学习笔记-2.1.1.进程的定义、组成、组织方式、特征
  8. 简历编写技巧-java开发工程师简历实战
  9. 弯管机编程软件电脑版_乐高Wedo2.0电脑版下载
  10. 如何注册、发布 CSDN博客
  11. 网盘多线程提速下载利器:JDownloader 2 for Mac
  12. 极大似然函数求解_极大似然估计法的理解指南
  13. 2023计算机考研专业课参考书目(408)
  14. 安全删除硬件并弹出媒体的列表中出现内置硬盘的解决办法.
  15. visio和office安装冲突
  16. 延迟发送:4款定时发送短信的应用程序
  17. 秒杀排列组合(上)————排列篇
  18. 给大家推荐一个比较好的VC论坛【VC驿站】
  19. MultiDex 不得不说的用法与源码解析
  20. AVR与ARM区别以及常用Arduino

热门文章

  1. IDEA修改Servlet的代码生成模板
  2. 自定义MyBatis
  3. 为表增加字段与拷贝数据到另一个表
  4. 关于Jquery中ajax方法data参数用法的总结
  5. pku 1573 Robot Motion 第一周训练——模拟
  6. 倩女手游服务器维护,倩女手游7月28日服务器在线维护公告
  7. android官方夜间模式,Android夜间模式实践
  8. linux查看passwd最后一行,Linux命令总结
  9. C++中如何使输出的1变成01
  10. 计算机视觉与深度学习 | 基于控制点的投影畸变图像配准(matlab源码)