。
有着那样一个具备实用价值的功能存在, 在于做出把先前的命令输出给进行调用这样的相关操作, 在此身处地方的输入以及输出确实实际上都是对象, 就好像举例来说, 你能够采用Out去将第三条命令的输出从当中抽取调出来。
你可以用下面这条命令安装 :
pip3
4. 列表表达式
一旦拥有了列表表达式, 你便无需再借助for loop去缔造一个list。它的基本语法呈现这般状态。
for item in list if
这就是一个生成包含一串数字的 list 的简单例子。
这条命令之中, 还能够运用表达式(), 因而也能够开展一些数学运算:
你甚至可以调用一个外部函数:
最后, 你同样能够于生成 list 的时候, 运用 if 语句来实施筛选。在下面的这个例子里头, 我们仅仅留存了能够被 2 整除的那些值:
5. 检查你的对象占用了多少内存
你能够运用sys.()去查看你所创建的对象占据的内存层面大小, 通过此类方式:
哇,等一下,为什么这么大的 list 只有 48 字节?
之所以这样, 是由于range函数仅仅返回了一个类似list的类别。从这能够看出来, 和直接运用list相比较而言, 运用range能够节约好多空间:
6. 返回多个值
能返回多个值的函数, 并不用借助list之类的数据结构, 也无需使用类, 这种函数有着这样的工作机制, 是这样的。
这种方式, 在返回值数量极少的时候, 是可行的, 然而, 一旦返回值超过了3个, 那么, 它们就应当被放置于一个(数据)类之中了。
7. 使用数据类
自 3.7 起开始给出数据类功能, 此功能同常规的类, 以及别的类似功能, 也就是返回多个值的那类函数相比较,存在以下优势:
数据类型有最低代码量要求
因为数据类已经自带了功能,故而你可以直接进行数据类的对比
数据类自带,你也可以直接在 debug 时打印出一个数据类
数据类型需要你输入提示,这样 bug 量会大大减少
下面展示了一个实用的数据类例子:
想更深入的了解数据类,可以参考:
8. 在位置不变的情况下交换变量
一个小技巧就可以减少很多行代码:
9. 合并 ( 3.5+)
从 3.5 开始, 的合并变得更容易了:
若出现有重复的 key, 那么, 第一个词典里的这个 key 与之对应的那个值, 将会被覆盖掉。
10. 把字符串变成标题形式
这只是 中的宝藏之一:
11. 把字符串分割成 list
你将能把一个字符串划分成为一个 list 的字符串, 于下述的例子里, 我们是以空格来划分字符串的:
12. 将一个字符串列表变成一个字符串
将上一个小技巧进行相反处理, 有这样一种情况, 我们能够将一个 list变为一个字符串, 且在每个词的中间位置插入空格。
你可能在想为什么不用
.join(" ")
好问题!
这是由于, .join()具备连接任何可迭代对象之能力, 并非仅仅局限于列表。于其中运用此函数, 能够避免这些操作, 出现在我们所不欲其出现之处。
13. Emoji
有些人对这个功能怀有喜好之情, 而有些人却对此极为抗拒, 这会因不同的人而有所不同。严格来讲, 这个功能所具备的主要益处在于, 在针对社交数据展开分析之际能够变得更为便利。
首先,你要安装 emoji 模块:
pip3 emoji
安装完后,你可以像下面这样使用这个模块:
想要更深入的了解 emoji 模块,可以参考:。
14. list 切片
list 切片的基本使用形式如下:
start:stop:step
启始, 终止以及步长, 全都是能够随意选择的参数。要是你并未进行定义, 那么它们将会依照如下这般的规则来分派默认的数值:
start = 0
end = 方括号里面字符串的最后一个字符
step = 1
15. 翻转字符串和 list
对于字符串以及 list, 你能够运用方才所提及的切片操作予以翻转。当把 step 设置为 -1 时, 如此便能够达成翻转操作。
16. 展示小猫的图片
我终于, 还是有了这样的发现, 即存在一个能够在我所撰写的文章当中提及小猫的机遇!当然, 你也有可能是借助这个功能去呈现其他的图片。首先, 你得进行安装, 它属于Image库的一个分支:
pip3
现在把这个图像下载下来并命名为 .jpg:
图源: 的
你可用下面这段 代码来显示图像。
或者你可以直接在 上做这件事。
所能做到的可不单纯只局限于此, 它能够针对图片来推进分析、实施裁剪、予以过滤、达成增强、进行变形之类操作, 要是期望更为深入地去知晓明白, 那就能够去瞧一瞧它的文档:
17. 使用 map()
的内置函数之一就是 map()。map() 的语法如下:
所以, 你能够给它一个函数用以让其执行, 接着还得传递给它相应的参数。这个参数能够是任何可进行迭代的对象。在如下的例子当中, 我运用了 list:
快速地去瞧一瞧你的代码, 是不是有的地方能够使用map()而并非用loop!
18. 从 list 或是 中获取 元素
你能够运用set()去获取list当中或者接近list的对象的元素, 最终通过返回形成一个set。
19. 找到高频值
在 list 或字符创中获取高频值:
max() 会返回 list 当中的最高值, 而 key 能够借助一个输入(诸如本例里的 test.count)来明确你所要排序的方式, 这个函数会应用于先前可迭代对象的每一项。
list 的内置函数是 test.count , 我们给予它一回输入, 它会对那个输入露面的次数予以统计, test.count(1) 便会返回 2, test.count(4) 便会返回 4。
对(test)进行设置, 将会返回相应的值, 此值具体就是{1, 2, 3, 4}。
所以, 这一行代码要做的事情是什么, 是先去找到所有的值是哪些, 是{1, 2, 3, 4}这些值, 之后, max这个又会怎样, max就会针对这四个值分别去进行list.count操作, 最后会返回什么, 会返回最大值。
20. 创建进度条
能够创建属于你自身的进度条, 其也是具备着相当趣味性的。然而直接去运用那个包, 速度方面则会快出许多:
pip3
现在你可以毫不费力的创建一个进度条了:
下面这个动画展示了所有可能的进度条类型:
图源: ,
21. 在交互 shell 中使用「_」
你可以用下划线来获得上一条命令的输入,在 中是这样的:
In : 3 * 3
Out: 9In : _ + 3
Out: 12
在 shell 里, 这条命令同样能够被使用, 在 shell 当中, 你也能够借助 Out 去获取 In 的输出结果, 举例来讲, 于上面所提及的例子里, Out 将会返回 9。
22. 快速创建一个网页服务器
你可以快速创建一个网页服务器,并将当前的路径作为内容:
-m http.
要是你打算跟你的同事去分享某些东西, 或者对一些简易的 HTML 网站进行测试, 那么这条命令是颇为有用的。
23. 多行字符串
纵然你能够于代码里借由三重引号(“ “ “ ” ” ”)去存储多行字符串, 然而这并非是理想之法, 你在三重引号之间的全部内容皆变成了字符串了, 如下方图示那般, 就连格式符也变成了字符串。
我相对更倾向于采用第二种方式, 这种方式能够将诸多行合并为一处,与此同时你的代码格式也会处于良好状态, 这个方法唯一存在的缺点便是你需要明确界定换行的位置。
24. 条件赋值的三元运算符
这是那些让你代码在保证可读性的情况下更简洁的方法之一:
if
else
实例如下:
x = "!" if (y == 2) else "!"
25. 统计出现数
你能够运用 库去获取 list里头各个 值的计数, 并且将其返回成为一个。
26. 比较符链( of )
这里, 你能够将比较符串联成一条链, 如此代码会具备更强的可读性, 并且会更加简洁。
27. 加一些色彩
中 的截屏
使用 ,你可以在你的终端上添加点颜色。
28. 日期计算
对于标准的那个模块, 此拓展模块进行了超级大的扩充, 先把这个模块下载一下:
pip3 -
你能够借助这个库去完成许多相当炫酷的事情!我仅仅会向你们讲述我所寻觅到的极为实用的一个实例, 即日志文件里日期的模糊解析之类的情况。
牢记这么一点, 当基本的日期函数在面对一些问题而陷入手足无措的境地之时, 此时, 就能发挥作用。
29. 整除
图源:公共源 -
二里面, 除法符号也就是斜杠, 默认情况下是整除, 要是其中有一个参与运算的数是浮点数的话那就是另外情况了。正因为此, 你才会收获这样的结果:
# 2
5 / 2 = 2
5 / 2.0 = 2.5
于3里, 除号所得结果默认作浮点数, 然而//却成了整除之符号, 故而此时结果变作了:
3
5 / 2 = 2.5
5 // 2 = 2
如果想要深入了解这一改变,请参考:。
30. 使用 检测
一个文件的检测你能够运用模块来进行。大量文本在接受分析期间 , 此模块会变得颇具效用。它可借由下面这条命令予以下载:
pip
你现在会有一个命令行工具——,这个工具的使用方式是:
.txt
.txt: ascii with 1.0
你可以以在程序中使用这个库,详见:
这就是所有的教程啦!希望大家喜欢这些技巧!
参考链接:
本文为机器之心编译,转载请联系本公众号获得授权。
加入机器之心(全职记者 / 实习生):
投稿或寻求报道: