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))