Python中的数据类型
七崽爱吃小饼干2025/12/17阅读 0
Python 中的数据类型可分为基础内置类型和容器/高级类型两大类,覆盖日常开发、算法刷题、工程开发等绝大多数场景,下面按「使用频率+功能分类」整理,附核心特点和示例:
一、基础内置类型(高频)
这类是 Python 最核心的基础类型,几乎所有代码都会用到:
| 类型 | 说明 | 示例 | 核心特点 |
|---|---|---|---|
| 整数(int) | 无大小限制的整数(正数/负数/0) | a = 10; b = -5; c = 0 | 支持加减乘除、取模、幂运算等 |
| 浮点数(float) | 带小数的数值(底层是双精度浮点型) | a = 3.14; b = 2.0; c = -0.5 | 注意浮点数精度问题(如 0.1+0.2≠0.3) |
| 布尔值(bool) | 只有 True/False 两个值(本质是 int 子类,True=1,False=0) | a = True; b = 10>5 | 用于条件判断、逻辑运算 |
| 字符串(str) | 不可变的字符序列(单引号/双引号/三引号包裹) | s = "hello"; s = 'a'; s = '''多行''' | 支持切片、拼接、格式化,不可直接修改字符 |
字符串补充(刷题/开发高频):
python
# 切片(字符串不可变,切片返回新字符串)
s = "abcde"
print(s[1:3]) # 'bc'
# 格式化
print(f"name: {s}, len: {len(s)}") # 'name: abcde, len: 5'
二、容器类型(核心)
用于存储多个元素,是算法、数据处理的核心类型,按「有序/无序、可变/不可变」分类:
1. 有序容器(可按索引访问)
| 类型 | 说明 | 示例 | 核心特点 |
|---|---|---|---|
| 列表(list) | 可变的有序序列(最常用容器) | lst = [1, "a", True, [2,3]] | 支持增删改查(append/pop/insert)、切片,可嵌套 |
| 元组(tuple) | 不可变的有序序列(小括号包裹,或无括号) | t = (1, 2); t = 1, 2 | 不可修改元素,可作为字典键、函数返回多值 |
| 范围(range) | 生成整数序列(多用于循环,节省内存) | r = range(0, 5); r = range(10) | 不可变,按需生成元素,不占额外内存 |
2. 无序容器(不可按索引访问)
| 类型 | 说明 | 示例 | 核心特点 |
|---|---|---|---|
| 字典(dict) | 可变的键值对集合(3.7+ 有序,之前无序) | d = {"name": "Tom", "age": 18} | 键必须是不可变类型(int/str/tuple),值任意;查询效率 O(1) |
| 集合(set) | 可变的无序不重复集合 | s = {1, 2, 2, 3} → {1,2,3} | 支持交集/并集/差集,去重、成员判断效率高 |
| 冻结集合(frozenset) | 不可变的集合(可作为字典键) | fs = frozenset({1,2,3}) | 不可增删元素,支持集合运算 |
容器高频示例(刷题场景):
python
# 列表(栈/队列实现)
stack = []
stack.append(1) # 入栈
stack.pop() # 出栈
# 字典(计数、映射)
count = {}
count["a"] = count.get("a", 0) + 1 # 统计字符出现次数
# 集合(去重、判重)
nums = [1,2,2,3]
unique_nums = set(nums) # {1,2,3}
if 2 in unique_nums: print("存在")
三、特殊/高级类型(场景化)
这类类型针对特定场景,工程开发/进阶编程常用:
| 类型 | 说明 | 适用场景 |
|---|---|---|
| 空值(None) | 表示“无”“空”(不是 0/空字符串/空列表) | 函数默认返回值、变量初始化 |
| 字节串(bytes) | 不可变的字节序列(二进制数据) | 网络传输、文件读写(二进制模式) |
| 字节数组(bytearray) | 可变的字节序列 | 二进制数据修改 |
| 枚举(enum.Enum) | 枚举类型(自定义有限取值的常量) | 状态标识(如:成功/失败/待处理) |
| 日期时间(datetime) | 处理日期、时间 | 日志记录、时间计算 |
四、核心分类维度(易混点)
- 可变 vs 不可变:
- 不可变:
int/float/bool/str/tuple/range/frozenset(修改会生成新对象); - 可变:
list/dict/set/bytearray(直接修改原对象,地址不变)。
- 不可变:
- 有序 vs 无序:
- 有序:
str/list/tuple/range(可按索引访问); - 无序:
dict(3.7+ 有序)/set/frozenset(不可按索引)。
- 有序:
- 哈希able(可哈希):
- 可哈希(可作为字典键/集合元素):不可变类型(
int/str/tuple/frozenset); - 不可哈希:可变类型(
list/dict/set)。
- 可哈希(可作为字典键/集合元素):不可变类型(
五、刷题/开发高频组合
| 场景 | 常用类型 |
|---|---|
| 算法刷题(数组/栈/队列) | list(模拟栈/队列)、dict(计数)、set(去重/判重) |
| 字符串处理 | str(切片/格式化)、list(转列表修改后转回) |
| 数据统计/映射 | dict(键值对映射)、collections.Counter(计数,dict子类) |
| 去重/集合运算 | set(交集/并集) |
总结
Python 数据类型的核心是「简单易用+灵活」:
- 基础类型(int/str/bool)解决单值存储;
- 容器类型(list/dict/set/tuple)解决多值存储,是刷题/开发的核心;
- 特殊类型针对二进制、时间等场景。
掌握「可变/不可变、有序/无序、可哈希」三个维度,就能快速判断不同场景该用哪种类型。