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.14f = -0.5g = 2.0(注意:2.0 是 float,而非 int)、h = 1e5(科学计数法,等价于 100000.0)。
  • complex(复数):由实部和虚部组成的数值,虚部用 jJ 表示。
    示例:i = 3 + 4j(实部 3,虚部 4)、j = 2j(纯虚数)。

2. 核心特性

  • 不可变性:创建后数值不可修改(如 a = 10,无法直接修改 a 的值为 11,只能重新赋值 a = 11)。
  • 支持算术运算+(加)、-(减)、*(乘)、/(除,结果为 float)、//(整除,结果为 int)、%(取余)、**(幂运算)。
    示例:5 + 3 = 85 / 2 = 2.55 // 2 = 25 % 2 = 12 ** 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 & s2s1.intersection(s2)(两集合共有的元素);
    • 并集:s1 | s2s1.union(s2)(两集合所有元素,去重);
    • 差集:s1 - s2s1.difference(s2)(s1 有但 s2 没有的元素);
    • 对称差集:s1 ^ s2s1.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 需可哈希) 关联数据存储、快速查找
Logo

葡萄城是专业的软件开发技术和低代码平台提供商,聚焦软件开发技术,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务

更多推荐