Python 六大数据类型全面解析
int(整数):无小数部分的整数,可正可负,支持任意大小(无需担心溢出)。a = 10(正整数)、b = -5(负整数)、c = 0(零)、(极大整数,Python 原生支持)。float(浮点数):带小数部分的数值,本质是二进制浮点数(可能存在精度误差)。e = 3.14f = -0.5g = 2.02.0是 float,而非 int)、h = 1e5(科学计数法,等价于100000.0comp
Python 六大数据类型全面解析
Python 中的数据类型是构建程序的基础,用于存储不同形式的数据并定义其可执行的操作。通常所说的 “六大数据类型” 指 Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典),它们在存储结构、可变性、用途上存在显著差异,以下从 “定义、特性、常用操作、应用场景” 四个维度逐一详解。
一、Number(数字):用于存储数值的基础类型
Number 是 Python 中表示 “数值” 的类型,包括整数、浮点数、复数等,支持基本的算术运算,是数学计算和量化场景的核心。
1. 核心分类与定义
- int(整数):无小数部分的整数,可正可负,支持任意大小(无需担心溢出)。
示例:a = 10
(正整数)、b = -5
(负整数)、c = 0
(零)、d = 10**100
(极大整数,Python 原生支持)。 - float(浮点数):带小数部分的数值,本质是二进制浮点数(可能存在精度误差)。
示例:e = 3.14
、f = -0.5
、g = 2.0
(注意:2.0
是 float,而非 int)、h = 1e5
(科学计数法,等价于100000.0
)。 - complex(复数):由实部和虚部组成的数值,虚部用
j
或J
表示。
示例:i = 3 + 4j
(实部 3,虚部 4)、j = 2j
(纯虚数)。
2. 核心特性
- 不可变性:创建后数值不可修改(如
a = 10
,无法直接修改a
的值为 11,只能重新赋值a = 11
)。 - 支持算术运算:
+
(加)、-
(减)、*
(乘)、/
(除,结果为 float)、//
(整除,结果为 int)、%
(取余)、**
(幂运算)。
示例:5 + 3 = 8
、5 / 2 = 2.5
、5 // 2 = 2
、5 % 2 = 1
、2 ** 3 = 8
。 - 类型转换:可通过
int()
、float()
、complex()
相互转换(注意:float 转 int 会丢弃小数部分,如int(3.9) = 3
)。
3. 应用场景
- 数学计算(如统计分析、科学计算)、计数器(如循环次数)、量化参数(如年龄、价格、坐标)。
二、String(字符串):用于存储文本的序列类型
String 是 Python 中表示 “文本” 的类型,由字符(字母、数字、符号等)组成的有序序列,是处理文本数据的核心。
1. 定义方式
用 单引号(' ')、双引号("")、三引号(''' ''' 或""" """) 包裹文本,三引号支持多行字符串。
示例:
python
运行
s1 = 'Hello Python' # 单引号
s2 = "I'm a student" # 双引号(避免与内部单引号冲突)
s3 = '''第一行
第二行
第三行''' # 三引号(多行字符串)
s4 = "Python" * 3 # 字符串重复,结果为 "PythonPythonPython"
2. 核心特性
- 不可变性:字符串创建后,单个字符无法修改(如
s = "abc"
,无法执行s[0] = "A"
,只能重新拼接)。 - 有序性:支持通过 “索引(Index)” 访问单个字符,索引从 0 开始(正向)或从 -1 开始(反向)。
示例:s = "Python"
,s[0] = "P"
(正向第 1 个字符)、s[-1] = "n"
(反向第 1 个字符)。 - 支持切片(Slice):通过
[起始:结束:步长]
截取子字符串,“结束索引” 不包含在内。
示例:s = "Python"
,s[1:4] = "yth"
(从索引 1 到 3)、s[::2] = "Pto"
(步长 2,间隔取字符)。
3. 常用操作
- 拼接:用
+
连接字符串(如s1 + s2 = "Hello PythonI'm a student"
)。 - 常用方法:
len(s)
:获取字符串长度(如len("Python") = 6
);s.upper()
/s.lower()
:转为大写 / 小写(如s.upper() = "PYTHON"
);s.split(sep)
:按分隔符分割为列表(如"a,b,c".split(",") = ["a","b","c"]
);s.replace(old, new)
:替换字符(如"abc".replace("a", "A") = "Abc"
)。
4. 应用场景
- 文本处理(如用户输入、日志输出)、字符串格式化(如拼接动态内容)、文件读写(如读取文本文件内容)。
三、List(列表):可变的有序序列
List 是 Python 中最灵活的序列类型,可存储任意类型的数据(数字、字符串、列表等),支持动态修改,是日常开发中最常用的数据结构之一。
1. 定义方式
用 方括号([]) 包裹元素,元素间用逗号分隔,元素类型可不同。
示例:
python
运行
lst1 = [1, 2, 3, 4] # 纯数字列表
lst2 = ["apple", "banana", "cherry"] # 纯字符串列表
lst3 = [1, "Python", True, [5, 6]] # 混合类型(包含子列表)
lst4 = list(range(5)) # 通过 list() 转换,结果为 [0,1,2,3,4]
2. 核心特性
- 可变性:支持添加、删除、修改元素(如
lst = [1,2,3]
,可执行lst[0] = 10
改为[10,2,3]
)。 - 有序性:支持索引和切片(与字符串一致),元素顺序固定(按插入顺序排列)。
- 可嵌套:列表内可包含其他列表(形成多维列表,如
[[1,2],[3,4]]
是二维列表,模拟矩阵)。
3. 常用操作
- 添加元素:
lst.append(x)
(末尾添加)、lst.insert(index, x)
(指定位置插入)、lst.extend(lst2)
(合并另一个列表); - 删除元素:
lst.remove(x)
(删除首个值为 x 的元素)、lst.pop(index)
(删除指定索引元素并返回)、del lst[index]
(直接删除指定索引元素); - 其他常用方法:
len(lst)
(长度)、lst.sort()
(排序,默认升序)、lst.reverse()
(反转顺序)、lst.copy()
(复制列表,避免浅拷贝问题)。
4. 应用场景
- 存储动态数据(如用户列表、商品列表)、多维数据(如表格数据、矩阵)、临时缓存(如循环中收集结果)。
四、Tuple(元组):不可变的有序序列
Tuple 与 List 类似,是有序序列,但核心区别是 不可变性,适合存储 “不希望被修改” 的数据。
1. 定义方式
用 圆括号(()) 包裹元素,元素间用逗号分隔;若只有一个元素,需在末尾加逗号(避免与括号表达式混淆)。
示例:
python
运行
t1 = (1, 2, 3, 4) # 多元素元组
t2 = ("a", "b", "c") # 字符串元组
t3 = (1, "Python", (5, 6)) # 混合类型(包含子元组)
t4 = (1,) # 单元素元组(必须加逗号,否则 t4 = (1) 会被视为整数 1)
t5 = tuple([1,2,3]) # 通过 tuple() 转换列表为元组
2. 核心特性
- 不可变性:创建后无法添加、删除、修改元素(如
t = (1,2,3)
,执行t[0] = 10
会报错)。 - 有序性:支持索引和切片(与 List 一致),元素顺序固定。
- 轻量性:元组的内存占用比列表小,访问速度更快(因不可变,无需维护动态数组结构)。
- 可哈希性:元组可作为字典的键(Key)或集合的元素(List 不可哈希,因可变)。
3. 常用操作
- 支持
len(t)
(长度)、t[index]
(索引访问)、t[start:end]
(切片); - 无添加 / 删除方法(因不可变),仅支持
t.count(x)
(统计 x 出现次数)、t.index(x)
(返回 x 首次出现的索引)。
4. 应用场景
- 存储固定数据(如配置参数、坐标点
(x,y)
、函数返回的多个值)、作为字典键(如{(1,2): "point"}
)、保护数据不被意外修改。
五、Set(集合):无序的唯一元素集合
Set 是 Python 中用于存储 “唯一元素” 的无序集合,支持数学中的集合运算(如交集、并集),核心作用是 “去重” 和 “关系判断”。
1. 定义方式
用 大括号({}) 包裹元素(注意:空集合不能用 {}
定义,需用 set()
,因 {}
会被视为空字典),或通过 set()
转换其他序列。
示例:
python
运行
s1 = {1, 2, 3, 4} # 数字集合(自动去重,如 {1,1,2} 会变为 {1,2})
s2 = {"apple", "banana", "cherry"} # 字符串集合
s3 = set([1,2,2,3]) # 列表转集合,结果为 {1,2,3}
s4 = set() # 空集合(必须用 set())
2. 核心特性
- 无序性:元素无固定顺序,不支持索引和切片(如
s = {1,2,3}
,执行s[0]
会报错)。 - 唯一性:自动去除重复元素(是 “去重” 的最佳工具)。
- 可变性:支持添加、删除元素(但元素必须是 “可哈希的”,如数字、字符串、元组;List、Set、Dictionary 不可作为 Set 元素,因不可哈希)。
3. 常用操作
- 添加 / 删除:
s.add(x)
(添加单个元素)、s.update(s2)
(添加多个元素)、s.remove(x)
(删除 x,不存在则报错)、s.discard(x)
(删除 x,不存在不报错); - 集合运算:
- 交集:
s1 & s2
或s1.intersection(s2)
(两集合共有的元素); - 并集:
s1 | s2
或s1.union(s2)
(两集合所有元素,去重); - 差集:
s1 - s2
或s1.difference(s2)
(s1 有但 s2 没有的元素); - 对称差集:
s1 ^ s2
或s1.symmetric_difference(s2)
(两集合独有元素的并集)。
- 交集:
4. 应用场景
- 数据去重(如列表去重
list(set(lst))
)、关系判断(如判断两个列表是否有交集)、数学集合运算(如统计两个用户群体的重叠度)。
六、Dictionary(字典):键值对映射的无序集合
Dictionary(简称 Dict)是 Python 中用于存储 “键值对(Key-Value)” 的结构,通过 “键(Key)” 快速查找 “值(Value)”,是处理 “关联数据” 的核心类型(类似其他语言的 “哈希表”“映射”)。
1. 定义方式
用 大括号({}) 包裹键值对,键与值用 :
分隔,键值对间用逗号分隔;或通过 dict()
转换其他结构。
示例:
python
运行
dict1 = {"name": "Alice", "age": 20, "gender": "female"} # 标准字典
dict2 = {1: "one", 2: "two", 3: "three"} # 键为整数
dict3 = dict([("name", "Bob"), ("age", 22)]) # 列表转字典(元素为键值元组)
dict4 = {} # 空字典
2. 核心特性
- 键值对映射:每个 Key 对应唯一的 Value,通过 Key 可快速访问 Value(时间复杂度 O (1))。
- 键的约束:Key 必须是 “可哈希的”(如数字、字符串、元组),且不可重复(重复键会覆盖前值,如
{"a":1, "a":2}
会变为{"a":2}
);Value 无约束(可任意类型,包括 List、Dict 等)。 - 无序性(Python 3.7+ 有序):Python 3.7 之前字典是无序的,3.7 及以后按 “插入顺序” 保存键值对(但仍不支持索引,需通过 Key 访问)。
3. 常用操作
- 访问 / 修改值:
dict[key]
(访问 Key 对应的 Value,Key 不存在则报错)、dict.get(key, default)
(访问 Value,Key 不存在返回 default)、dict[key] = value
(修改或新增键值对); - 删除键值对:
del dict[key]
(删除指定 Key 的键值对)、dict.pop(key)
(删除并返回 Key 对应的 Value); - 常用方法:
dict.keys()
:获取所有 Key(返回可迭代对象,可转列表);dict.values()
:获取所有 Value;dict.items()
:获取所有键值对(返回(key, value)
元组的可迭代对象);dict.clear()
:清空字典。
4. 应用场景
- 存储关联数据(如用户信息
{"id":1, "name":"Alice"}
、配置项{"host":"localhost", "port":8080}
)、快速查找(如通过 ID 查找用户详情)、作为函数参数(传递多个命名参数)。
六大数据类型核心差异对比表
数据类型 | 可变性 | 有序性 | 元素唯一性 | 可哈希性(能否作字典键) | 核心用途 |
---|---|---|---|---|---|
Number | 不可变 | -(无序列) | 无 | 可哈希 | 数值计算 |
String | 不可变 | 有序 | 无 | 可哈希 | 文本处理 |
List | 可变 | 有序 | 无 | 不可哈希 | 动态数据存储、多维数据 |
Tuple | 不可变 | 有序 | 无 | 可哈希 | 固定数据存储、字典键 |
Set | 可变 | 无序 | 有 | 不可哈希 | 去重、集合运算 |
Dictionary | 可变 | 3.7 + 有序 | Key 唯一 | 不可哈希(Key 需可哈希) | 关联数据存储、快速查找 |
更多推荐
所有评论(0)