概述
Python 中常见的数据结构可以分为内置数据结构和扩展数据结构(主要来自第三方库)两类,以下是详细介绍:
一、内置数据结构(Python 自带)
这些是 Python 解释器原生支持的数据结构,无需额外导入模块。
1. 列表(List)
- 特点:有序、可变(可修改)、允许重复元素,可存储不同类型数据。
- 用途:最常用的数据结构,适合存储序列型数据。
- 示例:
fruits = ["apple", "banana", 3, True] fruits.append("orange") # 添加元素 fruits[0] = "grape" # 修改元素
2. 元组(Tuple)
- 特点:有序、不可变(创建后不能修改)、允许重复元素。
- 用途:存储不可变的序列数据(如坐标、配置参数)。
- 示例:
point = (3, 4) # 坐标点 colors = ("red", "green", "blue") # 元组不可修改,以下代码会报错: # colors[0] = "yellow"
3. 字典(Dictionary)
- 特点:无序(Python 3.7+ 后保证插入顺序)、可变,以键值对(key: value)存储,键唯一。
- 用途:存储具有映射关系的数据(如对象属性、配置项)。
- 示例:
person = {"name": "Alice","age": 30,"is_student": False } print(person["name"]) # 访问值 person["age"] = 31 # 修改值
4. 集合(Set)
- 特点:无序、可变、无重复元素,支持数学集合运算(交集、并集等)。
- 用途:去重、成员关系判断、集合运算。
- 示例:
numbers = {1, 2, 3, 3, 4} # 自动去重,结果为 {1,2,3,4} numbers.add(5) # 添加元素 set1 = {1,2,3} set2 = {3,4,5} print(set1 & set2) # 交集 {3}
5. 字符串(String)
- 特点:有序、不可变,由字符组成,本质是字符的序列。
- 用途:文本处理。
- 示例:
text = "Hello World" print(text[0]) # 访问第一个字符 'H' print(text.split()) # 分割为列表 ['Hello', 'World']
二、扩展数据结构(第三方库)
需通过 import 导入,主要用于特定场景(如数据分析、高效运算)。
1. NumPy 数组(ndarray)
- 特点:同类型元素的多维数组,支持高效数值运算。
- 用途:科学计算、矩阵运算。
- 示例:
import numpy as np arr = np.array([1, 2, 3, 4]) print(arr * 2) # 元素级运算 [2 4 6 8]
2. Pandas 数据框(DataFrame)
- 特点:二维表格结构,带行索引和列名,支持异构数据(不同列可存不同类型)。
- 用途:数据分析、清洗、处理结构化数据(如表格、CSV)。
- 描述:在数据分析中,DataFrame 是 pandas 库中最核心的数据结构,你可以把它理解为一个二维表格,类似于 Excel 表格、数据库表或者 CSV 文件的结构。它是处理结构化数据(有行有列的数据)的主要工具。
- 示例:
import pandas as pd df = pd.DataFrame({'name': ['张三', '李四', '王五'],'age': [18, 19, 18],'score': [90, 85, 92],'gender': ['男', '女', '男'] }) print(df["age"]) # 访问"age"列
3. Pandas 系列(Series)
- 特点:一维带标签的数组,可视为 DataFrame 的单列。
- 用途:单列数据处理,支持索引操作和统计计算。
- 示例:
s = pd.Series([10, 20, 30], name="scores") print(s.mean()) # 平均值 20
4. 队列(deque,来自 collections 模块)
- 特点:双端队列,支持高效的首尾元素添加 / 删除。
- 用途:实现队列、栈等数据结构,处理滑动窗口问题。
- 示例:
from collections import deque q = deque([1, 2, 3]) q.append(4) # 尾部添加 q.popleft() # 头部删除,结果为 1
5. 有序字典(OrderedDict,来自 collections 模块)
- 特点:保留插入顺序的字典(Python 3.7+ 后普通字典已支持此功能,使用率下降)。
- 示例:
from collections import OrderedDict od = OrderedDict() od["a"] = 1 od["b"] = 2
总结
- 日常编程优先使用内置结构(列表、字典、集合等)。
- 数据分析首选 Pandas DataFrame/Series 和 NumPy 数组。
- 特殊场景(如高效队列、有序映射)可使用 collections 模块的扩展结构。
根据需求选择合适的数据结构,能显著提高代码效率和可读性。