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



推荐阅读
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文将介绍由密歇根大学Charles Severance教授主讲的顶级Python入门系列课程,该课程广受好评,被誉为Python学习的最佳选择。通过生动有趣的教学方式,帮助初学者轻松掌握编程基础。 ... [详细]
  • 本文详细解析了如何使用Python语言在STM32硬件平台上实现高效的编程和快速的应用开发。通过具体的代码示例,展示了Python简洁而强大的特性。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 自学编程与计算机专业背景者的差异分析
    本文探讨了自学编程者和计算机专业毕业生在技能、知识结构及职业发展上的不同之处,结合实际案例分析两者的优势与劣势。 ... [详细]
  • Google最新推出的嵌入AI技术的便携式相机Clips现已上架,旨在通过人工智能技术自动捕捉用户生活中值得纪念的时刻,帮助人们减少照片数量过多的问题。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
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社区 版权所有