概述

Python 中具有一些内建的数据结构,这些数据结构能方便地存储数据,并具有特殊的方法来获取或操纵数据。

常用的内建数据结构包括:

  • 列表(List)是一种有序的集合,可以随时添加和删除其中的元素。
  • 元组(Tuple)是另一种有序的集合,与列表相似,但一旦初始化就不能修改。
  • 集合(Set)是一个无序的不含重复元素的集合。
  • 字典(Dictionary)是一个无序的“键: 值”对的集合,其中每个键必须是唯一的。

这四种类型都相当于存储数据的容器,也可统称为容器(Container)类型或集合(Collection)类型。

Python 中常见的内置数据结构

Python 中常见的内置数据结构

在这些数据结构中,字符串、列表、元组以及 rangezipmapenumerate 等这些有序类型又都属于序列类型。其中列表、元组、range 对象为三种基本的序列类型。

序列是一块用于存放多个值的连续内存空间,并且按一定顺序排列,每一个值(称为元素)都分配一个数字,称为索引位置,通过该索引可以取出相应的值。

序列类型支持一些通用的操作,包括索引、切片、拼接(序列相加)、重复(序列与自身多次相加)、用 in 运算符检查某个元素是否是序列成员、通过内置函数计算序列的长度/最大值/最小值等。

集合和字典也支持一些序列操作,但严格来说,他们不属于序列类型,他们都不支持索引、切片、相加和相乘操作。

通用序列操作
运算 结果
x in s 如果 s 中的某项等于 x 则结果为 True,否则为 False
x not in s 如果 s 中的某项等于 x 则结果为 False,否则为 True
s + t st 相拼接
s * nn * s 相当于 s 与自身进行 n 次拼接
s[i] s 的第 i 项,起始为 0
s[i:j] sij 的切片
s[i:j:k] sij 步长为 k 的切片
len(s) s 的长度
min(s) s 的最小项
max(s) s 的最大项
s.index(x[, i[, j]]) xs 中首次出现项的索引号(索引号在 i 或其后且在 j 之前)
s.count(x) xs 中出现的总次数
可变序列的操作
运算 结果
s[i] = x s 的第 i 项替换为 x
s[i:j] = t sij 的切片替换为可迭代对象 t 的内容
del s[i:j] 等同于 s[i:j] = []
s[i:j:k] = t s[i:j:k] 的元素替换为 t 的元素
del s[i:j:k] 从列表中移除 s[i:j:k] 的元素
s.append(x) x 添加到序列的末尾 (等同于 s[len(s):len(s)] = [x])
s.clear() s 中移除所有项 (等同于 del s[:])
s.copy() 创建 s 的浅拷贝 (等同于 s[:])
s.extend(t)s += t t 的内容扩展 s (基本上等同于 s[len(s):len(s)] = t)
s *= n 使用 s 的内容重复 n 次来对其进行更新
s.insert(i, x) 在由 i 给出的索引位置将 x 插入 s (等同于 s[i:i] = [x])
s.pop()s.pop(i) 提取在 i 位置上的项,并将其从 s 中移除
s.remove(x) 删除 s 中第一个 s[i] 等于 x 的项目。
s.reverse() 就地将列表中的元素逆序。

列表、元组、集合和字典都属于可迭代对象(即能通过 for 语句遍历的对象),Python 的标准库中内置了许多操作这些可迭代对象的函数,如下所示:

可变序列的操作
运算 结果
all(iterable) iterable 为空,或其中的所有元素都为真值返回 True
any(iterable) iterable 中的任一元素为真值时返回 True
sum(iterable, /, start=0) start 开始自左向右对 iterable 的项求和并返回总计值。 iterable 的项通常为数字,而 start 值则不允许为字符串。
str(object) 返回 object 的字符串表示形式
list(iterable) 根据 iterable 创建一个新的列表
tuple(iterable) 根据 iterable 创建一个新的元组
set(iterable) 根据 iterable 创建一个新的集合
dict(mapping)
dict(iterable)
根据 mappingiterable 创建一个新的字典
reversed(seq) 根据序列 seq 生成一个反向的迭代器
sorted(iterable) 根据 iterable 中的项返回一个新的已排序列表
enumerate(iterable, start=0) 返回一个枚举对象(由索引和值构成的元组形成的序列),一般用在 for 循环中
数据结构列表