热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python字典排序_学Python必知的20个技巧,掌握它们,准没错

20usefulPythontipsandtricksyoushouldknow.以下为译文,旨在帮助同学们更好地学习和应用Python。Python作为当下较为流行

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

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

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

6aa9358927218c8e1da7ebc460d69bd9.png

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

01 Python之禅

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

abac5999952d1c3e91fe575b88ea9da7.png
02 链式赋值

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

83cc020763dd417d4062faff4364164a.png

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

03 链式比较

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

bb751947808e0193ae217d6847023b06.png

这类似于(2

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

30c01d89c7534a045afd3eb55e039cf8.png

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

9594bc4ca7405240a0e88fd2d6df89e9.png
04 多重赋值

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

1ea752f411a911573da2dc7096745aa5.png

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

05 更高级的多重赋值

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

b88bba051d97167423f869598e7b3521.png

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

06 交换变量

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

09ff8cc9afce0eb93819d63e0095d253.png
07 合并字典

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

7a57cdcb74fb4964e212b81759a1a13f.png
08 连接字符串

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

decc3de4f51722adee95fccb216b2940.png
09 高级遍历

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

41105e10626a5a00461edb5205ea3f09.png

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

10 反向遍历

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

05b4a3f42dd02afbd19c29074de25a2f.png
11 元素聚合

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

b314e11a6f4c82b5839b3dcff4b69c02.png

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

12 矩阵转置

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

d0e913859f84c021b7f4b6f2d2e5e8e5.png
13 唯一值

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

b3f70102848c2cf75860c5c5f9e5cd89.png
14 序列排序

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

47ee7a5ccf0fb7ab7622180d4d230862.png

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

5e35d0e8e5da017ab1e7a635f8d64ceb.png

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

668c513dd97e490b8c90f435cebdd867.png
15 字典排序

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

73f1fafda4fba0247f76c292db897700.png

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

33323eadf375c1e5852e8fee7e79b2ee.png
16 格式化raw字符串

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

2b599b17ad35f9390059b604c0514734.png
17 获取当前日期和时间

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

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

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

deee8292efffee57b5d6df903f3f1925.png

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

508ff1a1705e82a42d12f159ce072b48.png

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

fe863e7fce066985369a6b6969a14c48.png

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

483e99e115e6ecfd37c1f1ae30e26142.png

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

19 获得笛卡尔积

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

2cfe5a27990bbf0f397217ba76ed8a25.png
20 矩阵乘法操作符

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

d6584c309e76303f1fa930344d32e8aa.png
总结

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

Happy coding!



推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
author-avatar
rogerddd
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有