python 三维矩阵合并_学Python必知的20个技巧,掌握它们,准没错

7b535e280cd0ed010e2ac856d674b2d7.png

点击上方蓝色字体,关注我们

20 useful Python tips and tricks you should know. 以下为译文,旨在帮助同学们更好地学习和应用Python。

Python作为当下较为流行的通用编程语言,主要用于数据科学和机器学习、许多领域的科学计算、后端网络开发、移动和桌面应用等。哪些知名企业在Python:Google, Dropbox, Facebook, Mozilla, IBM, Quora, Amazon, Spotify, NASA, Netflix, Reddit等等。

Python不仅免费、开源,它还有一个由程序员和其他用户组成的庞大、专注、友好的社区。

Python在设计上坚持清晰化一的风格,语法设计上更是侧重于简单、可读和优雅。Python的作者有意的设计限制性很强的语法,使得不好的编程习惯都不能通过编译。其中很重要的一项就是Python的缩进规则。本文介绍20个你可能用到的Python技巧和窍门。

01 Python之禅

“Python 之禅”又称PEP 20,是用Tim Peters编写的一个小文本,代表了设计和使用Python的指导原则。你可以在Python网站上找到这个文本,也可以在终端(控制台)或Jupyter notebook中用一条语句获取它:

f190d252e8bba3f8675e78a5872e3f79.png

02 链式赋值

如果需要多个变量引用同一个对象,可以使用链式赋值:

082975d584d38b727e662e82f1091330.png

是不是很符合逻辑,又很优雅呢?

03 链式比较

通过链接比较运算符,可以将多个比较合并到一个Python表达式中。如果所有的比较都正确或错误,该表达式将返回true,否则返回false:

ec9355086fb7fa3c238dc32d76f35a71.png

这类似于(2 < x)和(x ≤ 8)和(6 < x)和(x ≤ 8),但更紧凑,只需对x进行一次评估。

要知道这种编码形式可是合法的:

57c5f9231c33ad1532ea60f472dd1df5.png

你还可以链接两个以上的比较:

e2dce60e6710b44ff72e16cdb7634ead.png

04 多重赋值

你可以使用元组解包在一条语句中分配多个变量:

e8b5761c99cb040753d24ff7712026a4.png

请注意,第一条语句中的2,4,8等同于元组(2,4,8)。

05 更高级的多重赋值

要知道Python能做到的远不止普通的多重赋值。赋值的左侧和右侧不需要相同数量的元素:

2872ebc4d2e2a094e0a854b1d5194c08.png

这种情况下,x取第一个值(2 ),因为它是第一个出现的。z是最后一个,取最后一个值(8)。y取列表中的所有其他值,因为它有星号(*y)。

06 交换变量

你可以在应用多个赋值时以简洁优雅的方式交换任意两个变量,而无需引入第三个变量:

f345b4e60a115ca1c65dc7d2619729e4.png

07 合并字典

合并两个或更多字典的方法便是将它们放到一个新的字典中:

e7f2f1b0e3f79581e26c4399f5c84f80.png

08 连接字符串

如果需要连接多个字符串,最终在它们之间有相同的字符或字符组,可以使用str.join()方法:

e5bd49cb1468880a7274808f2c6214c1.png

09 高级遍历

如果你想要遍历一个序列,并且需要序列元素和相应的索引,那么应该可以使用enumerate:

26de21f815b0ee2ff9341f0d4c31445e.png

在每次遍历中,你将获得一个元组,其中包含序列的索引和相应元素。

10 反向遍历

若想反向遍历序列,可以使用reversed:

7f1d1fbe3b8b082d87f49e35b68dcf06.png

11 元素聚合

如果要从几个序列中聚合元素,应该使用zip:

1f566c731e9de90c0e95911b8f93e7c1.png

可以通过遍历获得zip对象,或者将其转换为列表或元组。

12 矩阵转置

虽然在处理矩阵时通常会使用numpy(或类似的库),但是使用zip同样可以实现矩阵的转置:

286e4b27d3fc5d831ace4a10b4b5974f.png

13 唯一值

如果元素的顺序不重要,想从列表中删除重复项,可以通过将其转换为集合来获得唯一值:

b8fdec61083586ab0d66c8834cd477c2.png

14 序列排序

默认情况下,序列按其第一个元素排序:

0b5b3b5e3ae05637c204be6f8855bb06.png

但是,如果要根据第二个(或其他)元素对它们进行排序,可以使用key键和适当的lambda函数作为相应的参数:

c2d8aca3508322baa399568365b4d38a.png

如果想获得相反的顺序,也可以使用相同的方法:

e9dc52ac0178d1d8499d73b241cd8e7d.png

15 字典排序

可以使用类似的方法对获得的字典的键值元组进行排序。items()方法:

5133953cc57634bc0aa4399884d2819a.png

他们是根据键排序的。如果希望根据它们的值排序,则应该指定对应于key的参数,并最终反转:

eb2b0b913d42f6c20e200c1f1019607c.png

16 格式化raw字符串

PEP 498和Python 3.6引入“格式化字符串”(f字符串)。你可以在这样的字符串中嵌入表达式。要知道字符串可以直接用作raw字符串和格式化字符串使用,只需加上两个前缀:fr。

052d58d54c92fc432159238ad7a77b11.png

17 获取当前日期和时间

Python有一个内置的模块datetime,可用于处理日期和时间。一种方法便是now(),返回当前日期和时间:

431792558a1271f11a82b1c055602438.png

18 获取最大/最小元素的索引

Python并未提供直接获取列表或元组中最大或最小元素索引的函数。幸运的是,有两种优雅的方法可以做到这一点:

5706fe91a3d93d5972fcd114168ce20d.png

如果有两个或多个元素具有最大值,此方法将返回最后一个元素的索引:

e5f6871ca3856b47742118402541f667.png

如果想获取第一次出现的索引,需要稍微更改一下前面的语句:

9bc1356e909a92352dd202e239010c73.png

另一种方法可能更优雅呦!

da646748b0e681b6d973be8b73654099.png

要找到最小元素的索引,请使用函数min,记得不是max。

19 获得笛卡尔积

内置模块itertools提供了许多潜在有用的类。其中product函数便可用于获得笛卡尔乘积:

910685a47165c32934f1e9a74ee59109.png

20 矩阵乘法操作符

PEP 465和Python 3.5引入了用于矩阵乘法的专用运算符@。可以使用matmul、rmatmul和imatmul方法为你的类实现它。要知道使用该操作符进行向量或矩阵相乘非常优雅:

df117b86053c4330241a48896793b7bf.png

总结

你虽然已经看到20条Python技巧和窍门,让代码变得有趣而优雅。但还有很多其他语言特征值得去探索。

Happy coding!

帮助有志向的年轻人通过努力学习获得体面的工作和生活。

扫一扫关注“路飞学城”

6d74b30de1324dd3e6806713ab681c9a.png 270271755ba0a27e775b9cd7492171f2.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值