博文

目前显示的是 六月, 2024的博文

Python的内置函数sorted,从入门到放弃

Python 内置函数 sorted Python 内置函数 sorted 用法 1 :基本用法 最简单的用法: sorted 函数默认是升序 import random lst = [random.randint(- 10 , 10 ) for _ in range ( 8 )] print (lst) print ( sorted (lst)) 结果如下: [-5, 9, -7, -7, 4, -5, -6, 6] [-7, -7, -6, -5, -5, 4, 6, 9]   sorted 函数支持 reverse 参数,该参数默认值是 False ,表示升序,调用时传入 True ,表示降序: import random lst = [random.randint(- 10 , 10 ) for _ in range ( 8 )] print (lst) print ( sorted (lst, reverse = True )) 结果如下: [-8, 7, -10, 8, 6, 2, 10, -9] [10, 8, 7, 6, 2, -8, -9, -10]   sorted 函数支持 key 参数, key 参数可以设置排序的规则,通常可以传入可调用对象, python 中的可调用对象有很多,常用的有函数, lambda ,类等等: import random lst = [random.randint(- 10 , 10 ) for _ in range ( 8 )] print (lst) print ( sorted (lst, key = abs )) 结果如下: [7, -10, 1, -4, 4, 8, 5, 3] [1, 3, -4, 4, 5, 7, 8, -10] 这里解释一下,我传递内置函数 abs 给 key 参数,那么 sorted 就会用原元素的绝对值来排序,比如 7 的绝对值是 7 , -10 的绝对值是 10 , … 3 的绝对值是 3 , sorted 函数在内部比较的时候用的是这些原元素的绝对值来做比较操作的。 -10 的绝对值在此例是最大的,所有排在最右边(默认是升序,我没有改变 reverse 参数)。 ...

深入理解Python的set和dict(不涉及源码分析,想看源码分析的可以关闭了,源码分析后期会出)

图片
  集合( set )和字典( dict )的内部原理 Python 的 dict 和 set 构建在哈希表之上。这篇文章解释了哈希表的使用如何造成这些容器类型的优点和局限性。   以下是本文回答的一些问题: Python dict 和 set 的效率如何? 为什么集合元素是无序的? 为什么我们不能使用任何 Python 对象作为 dict 键或 set 元素? 为什么字典键的顺序取决于插入顺序   本文内容: 性能试验 哈希和相等 哈希表     哈希算法 集合工作原理造成的实际影响 Dict 中哈希表的使用        Key 共享字典 紧凑的 dict 如何节省空间并保持排序 dict 工作原理造成的实际影响   注意: 您无需了解所有这些细节即可充分利用字典和集合。但这两个结构的实现想法很美好 —— 这就是我描述它们的原因。如需实用建议,您可以跳至 “ 集合的工作原理造成的实际影响 ” 和 “ 字典的工作原理造成的实际影响 ” 章节。   为了激发对哈希表的研究,我们首先通过涉及数百万个项目的简单测试来展示 dict 和 set 的惊人性能。   性能试验 根据经验,所有 Pythonista 都知道字典和集合速度很快。我们将通过对照实验来证实这一点。   为了了解 dict 、 set 或 list 的大小如何影响使用 in 运算符的搜索性能,我生成了一个包含 1000 万个不同双精度浮点数的数组,即 “ 干草堆( haystack ) ” 。然后我生成了一组针:即 1,000 个浮点数,其中 500 个是从干草堆中挑选出来的, 500 个已验证不在其中。   对于 dict 基准测试,我使用 dict.fromkeys() 创建一个名为 haystack 的包含 1,000 个浮点数的字典。这是 dict 测试的设置。我使用 timeit 模块计时的实际代码是示例 1 (如 [ex_set...