python 常用的数据类型,以及其底层数据结构

发布时间:2025-04-27      访问量:25
Python 有多种常用的数据类型,每种类型都有其独特的底层数据结构,以下为你详细介绍:

1. 整数(`int`)
- **简介**:用于表示整数,Python 3 中的 `int` 类型可以表示任意大小的整数,不会像其他语言那样存在溢出问题。
- **底层数据结构**:Python 的 `int` 类型底层是一个变长对象,采用多精度表示。当整数较小时,使用固定大小的内存存储;当整数非常大时,会动态分配更多的内存来存储。

2. 浮点数(`float`)
- **简介**:用于表示实数,遵循 IEEE 754 标准。
- **底层数据结构**:Python 的 `float` 类型底层是一个 C 语言的 `double` 类型,通常占用 8 个字节(64 位)的内存空间,其中 1 位用于表示符号,11 位用于表示指数,52 位用于表示尾数。

3. 布尔值(`bool`)
- **简介**:只有两个值 `True` 和 `False`,用于逻辑判断。
- **底层数据结构**:`bool` 类型是 `int` 类型的子类,`True` 相当于整数 1,`False` 相当于整数 0。

4. 字符串(`str`)
- **简介**:用于表示文本数据,是不可变的序列类型。
- **底层数据结构**:Python 的 `str` 类型底层是一个不可变的 Unicode 字符序列,使用引用计数和垃圾回收机制来管理内存。字符串在内存中以连续的字符数组形式存储。

5. 列表(`list`)
- **简介**:是可变的、有序的序列类型,可以包含不同类型的元素。
- **底层数据结构**:Python 的 `list` 类型底层是一个动态数组,它在内存中是连续存储的。当列表的元素数量超过当前数组的容量时,会重新分配更大的内存空间,并将原有的元素复制到新的数组中。

6. 元组(`tuple`)
- **简介**:是不可变的、有序的序列类型,一旦创建,其元素不能被修改。
- **底层数据结构**:Python 的 `tuple` 类型底层是一个不可变的数组,在内存中也是连续存储的。由于元组是不可变的,所以在创建后其内存空间不会改变。

7. 集合(`set`)和冻结集合(`frozenset`)
- **简介**:`set` 是可变的、无序的集合类型,元素具有唯一性;`frozenset` 是不可变的集合类型。
- **底层数据结构**:Python 的 `set` 和 `frozenset` 类型底层都是使用哈希表实现的。哈希表通过哈希函数将元素映射到一个固定大小的数组中,每个数组位置称为一个桶。当多个元素映射到同一个桶时,会使用链表或开放寻址法来解决冲突。

8. 字典(`dict`)
- **简介**:是可变的、无序的键值对集合,键具有唯一性。
- **底层数据结构**:Python 的 `dict` 类型底层也是使用哈希表实现的。哈希表将键通过哈希函数映射到桶中,存储对应的键值对。当发生哈希冲突时,同样使用链表或开放寻址法来解决。

以下是一些示例代码,展示这些数据类型的基本使用:
python # 整数 num = 10 print(type(num)) # 浮点数 f_num = 3.14 print(type(f_num)) # 布尔值 is_true = True print(type(is_true)) # 字符串 text = "Hello, World!" print(type(text)) # 列表 my_list = [1, 2, 3, 'a', 'b'] print(type(my_list)) # 元组 my_tuple = (1, 2, 3) print(type(my_tuple)) # 集合 my_set = {1, 2, 3} print(type(my_set)) # 字典 my_dict = {'name': 'John', 'age': 25} print(type(my_dict))
堆内存
多线程
strdup
初始化器
冒泡排序
增删改查
BufferedReader
输入输出
面向对象
生命周期
闭包的概念
原型链
Flask
mysql-connector-python
单例模式
浅拷贝
隔离级别
索引
InnoDB
左连接
聚合函数
PuTTY
TRUNCATE
str_starts_with_many
DateTime
array_combine
闭包的概念