热门标签 | 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!



推荐阅读
  • 投融资周报 | Circle 达成 4 亿美元融资协议,唯一艺术平台 A 轮融资超千万美元 ... [详细]
  • 计算机视觉领域介绍 | 自然语言驱动的跨模态行人重识别前沿技术综述(上篇)
    本文介绍了计算机视觉领域的最新进展,特别是自然语言驱动的跨模态行人重识别技术。上篇内容详细探讨了该领域的基础理论、关键技术及当前的研究热点,为读者提供了全面的概述。 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 本文深入探讨了 hCalendar 微格式在事件与时间、地点相关活动标记中的应用。作为微格式系列文章的第四篇,前文已分别介绍了 rel 属性用于定义链接关系、XFN 微格式增强链接的人际关系描述以及 hCard 微格式对个人和组织信息的描述。本次将重点解析 hCalendar 如何通过结构化数据标记,提高事件信息的可读性和互操作性。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • Python应用实例大揭秘:七大令人惊叹的高阶技巧展示
    2020年,Python无疑成为了最炙手可热的编程语言,其影响力已远远超出程序员的范畴。从初学者到资深从业者,甚至小学生,都在纷纷加入Python的学习热潮中。凭借其低门槛、易上手和强大的功能,Python正逐渐成为各行业不可或缺的工具。本文将揭示七个令人惊叹的Python高级应用技巧,帮助读者进一步提升编程水平。 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 在本文中,我们将探讨如何在Docker环境中高效地管理和利用数据库。首先,需要安装Docker Desktop以确保本地环境准备就绪。接下来,可以从Docker Hub中选择合适的数据库镜像,并通过简单的命令将其拉取到本地。此外,我们还将介绍如何配置和优化这些数据库容器,以实现最佳性能和安全性。 ... [详细]
  • Python全局解释器锁(GIL)机制详解
    在Python中,线程是操作系统级别的原生线程。为了确保多线程环境下的内存安全,Python虚拟机引入了全局解释器锁(Global Interpreter Lock,简称GIL)。GIL是一种互斥锁,用于保护对解释器状态的访问,防止多个线程同时执行字节码。尽管GIL有助于简化内存管理,但它也限制了多核处理器上多线程程序的并行性能。本文将深入探讨GIL的工作原理及其对Python多线程编程的影响。 ... [详细]
  • TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得
    TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得 ... [详细]
  • 本文源自极分享,详细内容请参阅原文。技术债务如同信用卡负债,随着时间推移,修复成本会越来越高,因此程序员必须对此有深刻认识。此外,团队应致力于培养一种持续维护和优化代码的文化,以减少技术债务的累积。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 全新发布的自我修复与自我更新的Linux版本,专为云计算环境设计! ... [详细]
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社区 版权所有