使用纯 Python 代码来模拟实现 Python 字典

在前面几篇文章中,我们一起了解了 Python 字典的概念、用法和实现原理。今天,我们试着用 Python 代码来实现一个具有全功能的字典类,从而加强理解。 【基本思路】 首先,我们要确认字典应具备的基本功能: 存储 key 唯一的键值对 可通过 key 来访问键值对,且时间效率较高 可迭代 支持 keys()、value() 和 item() 等 dict 支持的基本方法 可获取元素个数,可以字

详情

Python 源码解读系列文章

《读源码学 Python》是本站推出的一系列 优质的 Python 底层实现相关文章。 为方便大家阅读,特将已发布的文章链接整理如下: 从 Python 列表的特性来探究其底层实现机制 从 Python 源码来分析列表的 resize 机制 从源码剖析 Python 字典的底层实现 详细介绍 Python 字典使用的哈希表   【原创不易,欢迎转载,请注明出处,抄袭必究!】 欢迎关注本站

详情

详细介绍 Python 字典使用的哈希表

我们在上一篇文章中分析了 CPython 中是如何实现 dict 的。由于涉及内容较多,我可能并没有描述清楚 dict 所用的哈希表的具体结构。 如果你也对此有疑问,不妨来看一下本文对哈希表结构的进一步分析。 【dict 哈希表】 先看一张重新制作的图。 这张图描述的就是 CPython 中 PyDictKeysObject 结构中的成员变量 dk_indices。它的数据类型是 char[],表

详情

从源码剖析 Python 字典的底层实现

在《RealPython 基础教程:Python 字典用法详解》这篇文章中,我们介绍了 dict 的特性: dict 是存储键值对的关联容器 dict 中的 key 是唯一的 可使用 dict[key] 语法来快速访问 dict 中的元素 Python 3.6 之后的版本会保持元素添加到 dict 中的顺序 那么,Python 底层是如何支撑这些特性的呢?其运行效率如何? 我们今天就来简单探索一下

详情

一文掌握 Python 迭代器的原理

理解迭代器是每个严肃的 Python 使用者学习 Python 道路上的里程碑。本文将从零开始,一步一步带你认识 Python 中基于类的迭代器。 相较于其他编程语言,Python 的语法是优美而清晰的。比如 for-in 循环这种极具 Python 特色的代码,让你读起来感觉就像读一个英语句子一样。它很能体现 Python 的美感。 numbers = [1, 2, 3] for n in nu

详情

从 Python 源码来分析列表的 resize 机制

Python 列表底层是通过存储对象指针的变长数组来实现的,使用数组带来的好处就是可以通过索引随机访问列表中的元素。 然而,由于 list 属于可变数据类型,我们可以动态地在 list 中增减元素,当底层数组不足以容纳新元素时,就要调整其大小了。这正是“变长”的含义所在。 那么,list 使用的变长数组是如何调整其大小呢?我们通过阅读 Python 源码来做下简单分析。 【列表初始内存分配机制】

详情

Python 列表的应用场景有哪些?你使用对了吗?

我们在前几篇文章中依次介绍了列表的特性和用法、列表推导式、列表的底层实现。今天来聊一聊列表在实际开发中的应用场景。   在开发中,选用何种数据结构是由我们面对的数据特征和业务场景决定的。 数据是单个的还是批量的,是小规模的还是海量的? 数据是独立的还是彼此关联的? 数据的生成是随机的还是有先后顺序的? 数据的用途是什么?会不会频繁读写?只读多还是修改多? 数据是否应用于多线程环境? &#

详情

从 Python 列表的特性来探究其底层实现机制

列表(list)是 Python 中一个非常重要且常见的数据结构,它有很多易用的特性:可索引([index]),可切片([start, end, step]),能对其中的元素进行增(append、insert、extend)删(pop、remove)改操作。 如果你同时熟悉其他编程语言,比如 C++,你会觉得 Python 列表和 C++ STL 提供的 list 在操作上有些相似。 是的,它们都

详情

列表推导式:简洁高效更具 Python 风格的列表创建方法

我们在《Python 中的列表和元组》中已经详细介绍了列表(list)的基本特性和使用方法,本文将着重介绍一种 Python 中用于创建 list 的简洁高效的语法形式:列表推导式。Python 之所以广受欢迎,有一个重要的原因是 Python 代码风格优雅,容易编写,并且几乎和普通英语一样易读(这当然是针对大多数母语为英语的开发者)。列表推导式就是 Python 中体现这一因素的语言特性。 列表

详情

f-string: 改进的 Python 字符串格式化语法

f-strings 是 Python 3.6 引入的一种非常棒的字符串格式化方法。 相比其他格式方法,f-strings 更易读、更简洁、更少犯错,也更快。 在了解为什么以及如何使用 f-strings 之前,我们先看一下在 f-strings 之前 Python 是如何进行字符串格式化的。那是一段很艰难的日子,犹如大雪中艰难攀爬上下学路上的山坡。 【点此阅读全文】 欢迎关注本站公众号【pytho

详情