如何玩转Python? 一文总结30种Python的窍门和技巧
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:
return
print('Your current python is %d.%d. Please use Python 3.6.' % (v.major, v.minor))
exit(1)
3.使用IPython
我创了一个 python交流群,有感兴趣的小伙伴也可以加我的扣扣群867零67久45,群里有专门的老师跟资料可以提供给小伙伴们学习python,晚上8点也有老师直播教小伙伴们怎么学习python,欢迎大家加入python这个大家庭。
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]
start,stop和step是可选的。如果不填写,则默认为:
- 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 * 3Out[1]: 9In [2]: _ + 3Out[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 Countera=[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.txtsomefile.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
我创了一个 python交流群,有感兴趣的小伙伴也可以加我的扣扣群867零67久45,群里有专门的老师跟资料可以提供给小伙伴们学习python,晚上8点也有老师直播教小伙伴们怎么学习python,欢迎大家加入python这个大家庭。
本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
如何玩转Python? 一文总结30种Python的窍门和技巧的更多相关文章
- python实战===2017年30个惊艳的Python开源项目 (转)
本文转自:http://www.sohu.com/a/216723120_115128 摘要:本文来自Mybridge,介绍了过去一年里30个惊艳的Python开源项目.点击每一个都可以在GitHub ...
- 你可能不知道的 30 个 Python 语言的特点技巧
列表按难度排序,常用的语言特征和技巧放在前面. 1.1 分拆 >>> a, b, c = 1, 2, 3>>> a, b, c(1, 2, 3)> ...
- 你可能不知道的30个Python语言的特点技巧
1 介绍 从我开始学习Python时我就决定维护一个经常使用的“窍门”列表.不论何时当我看到一段让我觉得“酷,这样也行!”的代码时(在一个例子中.在StackOverflow.在开源码软件中,等等), ...
- 30 个 Python 语言的特点技巧
1 介绍 从我开始学习Python时我就决定维护一个经常使用的“窍门”列表.不论何时当我看到一段让我觉得“酷,这样也行!”的代码时(在一个例子中.在StackOverflow.在开源码软件中,等等 ...
- 30个Python物联网小实验5:光线感应灯
30个Python物联网小实验5:光线感应灯 光线传感器 光线变化执行函数 光线状态执行函数 30个Python物联网小实验5:光线感应灯 光线传感器 可以检测周围环境的亮度: 方向性较好,感知特定方 ...
- 学python必须知道的30个技巧
收集这些有用的捷径技巧 1. 原地进行交换两个数字 我们对赋值的右侧进行一个新的元组,左侧解析(unpack)那个(未被引用的)元组到变量 <a> 和 <b> 赋值完成时,新的 ...
- 使用 Mypy 检查 30 万行 Python 代码,总结出 3 大痛点与 6 个技巧!
作者:Charlie Marsh 译者:豌豆花下猫@Python猫 英文:Using Mypy in production at Spring (https://notes.crmarsh.com/u ...
- 如何在命令行模式下查看Python帮助文档---dir、help、__doc__
如何在命令行模式下查看Python帮助文档---dir.help.__doc__ 1.dir函数式可以查看对象的属性,使用方法很简单,举str类型为例,在Python命令窗口输入 dir(str) 即 ...
- 30行Python代码实现人脸检测
参考OpenCV自带的例子,30行Python代码实现人脸检测,不得不说,Python这个语言的优势太明显了,几乎把所有复杂的细节都屏蔽了,虽然效率较差,不过在调用OpenCV的模块时,因为模块都是C ...
随机推荐
- 典藏版Web功能测试用例库
界面显示 初始界面元素:title.内容,默认值.必填项(红*) 样式美观 排版规范 字体统一 编辑页面有光标,定位在第一个可编辑文本框 内容过多时,滚动条 loading ...
- 关于弹性布局flex
什么时候使用flex布局? 当页面排版涉及左右浮动.垂直居中等时,应使用flex布局来避免传统的盒式布局带来的一些Bug. 如何使用flex布局? 在目标元素的父元素设置csss属性.display: ...
- redis部署问题
在部署redis哨兵的时候,一开始一直都是失败:杀死master进程后,没有选出新的master 日志如下 9985:X 18 Feb 20:14:42.409 # +sdown master mym ...
- Jenkins打Docker镜像推送到私有仓库
Jenkins打Docker镜像推送到私有仓库 因为我的Jenkins是安装在群晖NAS中的docker,所以我这边就以Docker安装Jenkins为例 echo '================ ...
- CountDownLatch、CyclicBarrier
CountDownLatch CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能.比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行 ...
- MyBatis学习(三)日志输出环境配置
一.编写日志输出环境配置文件 在开发过程中,最重要的就是在控制台查看程序输出的日志信息,在这里我们选择使用 log4j 工具来输出: 准备工作:将[MyBatis]文件夹下[lib]中的 log4j ...
- 概率派VS贝叶斯派
机器学习中的MLE和MAP两大学派的争论: 频率学派 - Frequentist - Maximum Likelihood Estimation (MLE,最大似然估计): 频率学派认为世界是确定的, ...
- 64位Win7下H3C的iMC无法查看“网络拓扑”的解决方法、心路历程
64位Win7下H3C的iMC无法查看"网络拓扑"的解决方法.心路历程
- C++对话框创建及修改对话框属性
转载:http://www.51testing.com/html/48/n-3151648.html 创建对话框 C++中对话框分为模式对话框和非模式对话框. 模式对话框的创建: MyDialog m ...
- 【题解】[CQOI]动态逆序对
题目链接 题意如题,维护一个动态序列的逆序对总数. 注意题目给的是\([1,n]\)的排列,所以没必要离散化了. 考虑逆序对:二维偏序可以用树状数组做,现在是三维偏序,即加了一个时间维度. 找一个数前 ...