第2章 内置数据容器


第 2 章 · 内置数据容器

章节摘要:列表、元组、字典、集合、字符串是 Python 的五大内置容器。本章不按 API 手册讲,而按三条解释器视角的线索重讲一遍:可变性决定了谁能当字典键;哈希性决定了谁能进集合;内存布局决定了各自的操作成本。读完你能凭原理选对容器,而不是靠背。

学习目标

阅读完本章,你应当能够:

  1. 说出 list 与 tuple 在可变性、哈希性、内存占用上的全部差异;
  2. 画出 dict 的开放寻址哈希表结构,解释"键必须可哈希"的底层原因;
  3. 用实证方法比较各容器操作的复杂度,避免 O(n) 惊讶;
  4. 解释 str 不可变的动机与驻留、拼接优化等行为;
  5. 根据访问模式(随机访问、成员测试、有序遍历)选出正确的容器。

核心概念速览

可变性与哈希性是一枚硬币的两面:不可变才可哈希,可哈希才能做键——这条规则筛掉了你九成的容器误用。

子章节导航

2.1 列表与元组:可变与不可变

两大序列容器的内存布局、过度分配策略、以及 tuple 的"轻量但不平凡"。

2.2 字典与集合:哈希的力量

dict 的哈希表结构与扩容机制,set 作为"只有键的 dict",以及有序性保证的由来。

2.3 字符串与格式化

str 的不可变设计、f-string 与 format 的用法地图、编码问题的一句话真相。

子章节之间的逻辑关系

三节共用一个分析框架(可变性、哈希性、内存布局),但侧重点递进:

list/tuple(2.1) 最基础的连续序列,可变性对比最鲜明 │ 哈希性引入 ▼ dict/set(2.2) 用哈希把查找降到常数,键的规则由此而来 │ 不可变序列的极致 ▼ str(2.3) 不可变 + 驻留 + 编码,兼讲格式化输出 ​

前置知识与后续延伸

  • 前置:第 1 章的对象三要素与名字绑定。
  • 为后续铺垫:第 3 章的 for 循环建立在容器的迭代协议上;第 7 章生成器是"惰性序列";第 9 章 Pandas 的 Series 本质是"带标签的序列"。
作者与出处
原作者:灏天文库
来源:平台策划编纂
整理人: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U