文章目录
- # 创建-操作-输出完整演示 # 初始化商品列表 products = [“手机”, “笔记本”, “耳机”, “鼠标”] print(“原始列表:”, products) # [‘手机’, ‘笔记本’, ‘耳机’, ‘鼠标’] # 索引访问与切片 print(“首个商品:”, products[0]) # 手机 print(“最后两个商品:”, products[-2:]) # [‘耳机’, ‘鼠标’] # 元素修改与扩展 products[1] = “游戏本” # 修改元素 products.append(“键盘”) # 追加元素 products.insert(2, “显示器”) # 插入元素 print(“修改后列表:”, products) # [‘手机’, ‘游戏本’, ‘显示器’, ‘耳机’, ‘鼠标’, ‘键盘’] # 删除操作 removed_item = products.pop(3) # 删除索引3的元素 print(“被删除商品:”, removed_item) # 耳机 print(“当前列表:”, products) # [‘手机’, ‘游戏本’, ‘显示器’, ‘鼠标’, ‘键盘’]
- # 创建数字列表 nums = [3, 1, 4, 1, 5, 9] # 排序与反转 nums.sort() # 升序排列 [1, 1, 3, 4, 5, 9] nums.reverse() # 反转列表 [9, 5, 4, 3, 1, 1] # 列表推导式 squares = [x**2 for x in nums if x > 3] print(“大数平方:”, squares) # [81, 25, 16] # 其他实用方法 print(“出现次数:”, nums.count(1)) # 2 nums.clear() # 清空列表
- # 创建-更新-遍历完整示例 # 初始化学生信息 student = { “name”: “张三”, “age”: 18, “courses”: [“数学”, “英语”] } # 添加新信息 student[“gender”] = “男” student[“age”] = 19 # 修改年龄 # 安全获取值 score = student.get(“score”, 0) print(“默认分数:”, score) # 0 # 删除元素 removed = student.pop(“courses”) print(“已删除课程:”, removed) # [‘数学’, ‘英语’] # 遍历字典 print(“n学生详细信息:”) for key, value in student.items(): print(f”{key}: {value}”) “”” 输出: 学生详细信息: name: 张三 age: 19 gender: 男 “””
- # 字典合并与推导式 grades = {“数学”: 90, “英语”: 85} extra_grades = {“编程”: 95, “物理”: 88} # 合并字典 grades.update(extra_grades) # 字典推导式 passed = {subject: score for subject, score in grades.items() if score >= 85} print(“及格科目:”, passed) # {‘数学’:90, ‘英语’:85, ‘编程’:95, ‘物理’:88} # 键值反转 inverted_dict = {v: k for k, v in grades.items()} print(“分数对照:”, inverted_dict) # {90: ‘数学’, 85: ‘英语’, …}
目录
- 一、列表(List)—— 灵活的动态数组
- 1.1 基础操作全流程示例
- 1.2 核心方法详解
- 二、元组(Tuple)—— 不可变数据容器
- 三、字典(Dict)—— 高效键值存储
- 3.1 完整操作流程
- 3.2 进阶方法应用
- 四、集合(Set)—— 唯一元素管理器
- 五、四大数据结构方法速查表
- 六、实战应用案例
- 最佳实践指南
# 创建-操作-输出完整演示
# 初始化商品列表
products = ["手机", "笔记本", "耳机", "鼠标"]
print("原始列表:", products) # ['手机', '笔记本', '耳机', '鼠标']
# 索引访问与切片
print("首个商品:", products[0]) # 手机
print("最后两个商品:", products[-2:]) # ['耳机', '鼠标']
# 元素修改与扩展
products[1] = "游戏本" # 修改元素
products.append("键盘") # 追加元素
products.insert(2, "显示器") # 插入元素
print("修改后列表:", products) # ['手机', '游戏本', '显示器', '耳机', '鼠标', '键盘']
# 删除操作
removed_item = products.pop(3) # 删除索引3的元素
print("被删除商品:", removed_item) # 耳机
print("当前列表:", products) # ['手机', '游戏本', '显示器', '鼠标', '键盘']
# 创建数字列表
nums = [3, 1, 4, 1, 5, 9]
# 排序与反转
nums.sort() # 升序排列 [1, 1, 3, 4, 5, 9]
nums.reverse() # 反转列表 [9, 5, 4, 3, 1, 1]
# 列表推导式
squares = [x**2 for x in nums if x > 3]
print("大数平方:", squares) # [81, 25, 16]
# 其他实用方法
print("出现次数:", nums.count(1)) # 2
nums.clear() # 清空列表
完整操作示例
# 定义-访问-解包全流程
# 创建坐标元组
point = (10, 20)
# 索引访问
print("X坐标:", point[0]) # 10
print("Y坐标:", point[1]) # 20
# 元组解包
x, y = point
print(f"坐标位置: ({x}, {y})") # (10, 20)
# 类型转换示例
list_point = list(point) # 转为列表可修改
list_point[0] += 5
new_point = tuple(list_point)
print("新坐标:", new_point) # (15, 20)
# 函数返回多个值
def get_dimensions():
return 1920, 1080
width, height = get_dimensions()
print(f"分辨率: {width}x{height}")
# 创建-更新-遍历完整示例
# 初始化学生信息
student = {
"name": "张三",
"age": 18,
"courses": ["数学", "英语"]
}
# 添加新信息
student["gender"] = "男"
student["age"] = 19 # 修改年龄
# 安全获取值
score = student.get("score", 0)
print("默认分数:", score) # 0
# 删除元素
removed = student.pop("courses")
print("已删除课程:", removed) # ['数学', '英语']
# 遍历字典
print("n学生详细信息:")
for key, value in student.items():
print(f"{key}: {value}")
"""
输出:
学生详细信息:
name: 张三
age: 19
gender: 男
"""
# 字典合并与推导式
grades = {"数学": 90, "英语": 85}
extra_grades = {"编程": 95, "物理": 88}
# 合并字典
grades.update(extra_grades)
# 字典推导式
passed = {subject: score for subject, score in grades.items() if score >= 85}
print("及格科目:", passed) # {'数学':90, '英语':85, '编程':95, '物理':88}
# 键值反转
inverted_dict = {v: k for k, v in grades.items()}
print("分数对照:", inverted_dict) # {90: '数学', 85: '英语', ...}
完整操作示例
# 创建-运算-方法全流程
# 初始化集合
A = {1, 2, 3, 4}
B = {3, 4, 5, 6}
print("原始集合A:", A) # {1,2,3,4}
print("原始集合B:", B) # {3,4,5,6}
# 集合运算
print("并集:", A | B) # {1,2,3,4,5,6}
print("差集:", A - B) # {1,2}
print("对称差集:", A ^ B) # {1,2,5,6}
# 元素操作
A.add(5) # 添加元素
A.discard(2) # 安全删除
print("更新后A:", A) # {1,3,4,5}
# 集合推导式
even_numbers = {x for x in range(10) if x%2 == 0}
print("偶数集合:", even_numbers) # {0,2,4,6,8}
O(1) :操作耗时与数据量无关
O(n):操作耗时与数据量成正比
| 操作 | 列表方法 | 元组特性 | 字典方法 | 集合方法 |
|---|---|---|---|---|
| 添加元素 | append/insert | 不可变 | dict[key] = value | add/update |
| 删除元素 | pop/remove | 不可变 | pop/del | remove/discard |
| 排序 | sort() | sorted() | sorted(items) | sorted() |
| 反转 | reverse() | 需转换列表 | reversed() | 需转换列表 |
| 长度查询 | len() | len() | len() | len() |
| 包含检查 | in | in | in (keys) | in |
| 内存占用 | 较高 | 较低 | 较高 | 中等 |
| 时间复杂度 | 查询O(n) | 查询O(n) | 查询O(1) | 查询O(1) |
数据清洗工具函数
def data_cleaner(raw_data):
# 列表存储有效数据
cleaned = []
# 集合记录已处理项
seen = set()
# 字典统计频率
counter = {}
for item in raw_data:
# 去重处理
if item not in seen:
cleaned.append(item)
seen.add(item)
# 统计频率
counter[item] = counter.get(item, 0) + 1
# 元组保存元信息
meta = (len(raw_data), len(cleaned))
return {
"cleaned_data": cleaned,
"frequency": counter,
"metadata": meta
}
# 测试数据
test_data = ["A", "B", "A", "C", "B", "D"]
result = data_cleaner(test_data)
print(result)
"""
输出:
{
'cleaned_data': ['A', 'B', 'C', 'D'],
'frequency': {'A':2, 'B':2, 'C':1, 'D':1},
'metadata': (6, 4)
}
"""
数据结构选择原则:
- 需要保持顺序 → 列表/有序字典
- 快速查找 → 字典/集合
- 数据不可变 → 元组
- 元素唯一性 → 集合
性能优化技巧:
- 列表在尾部操作的效率最高(append/pop)
- 字典键应尽量使用不可变类型
- 集合运算比手动去重效率更高
代码可读性建议:
- 使用类型提示:
def process(items: list[str]) -> dict: - 复杂结构添加注释说明
- 优先使用内置方法而非手动实现
常见陷阱规避:
- 避免在循环中修改列表长度
- 字典键不存在时使用get()方法
- 注意集合的无序特性
掌握这些核心数据结构的特性和使用场景,将显著提升Python编程效率。建议读者在实际开发中多尝试不同结构的组合应用,例如使用字典列表存储表格数据,或通过集合运算进行高效去重。
到此这篇关于Python中四大核心数据结构(列表,元组,字典和集合)的完全解析的文章就介绍到这了,更多相关Python数据结构内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!
您可能感兴趣的文章:
- Python中内置的数据结构类型详解(内置数据容器)
- Python数据结构集合的相关详解
- python常用数据结构字典梳理
- Python容器类型之列表/字典/元组/集合方式
- Python列表元组字典集合存储结构详解
- Python中列表,元组,字典和集合的区别及它们之间的转换
- Python基础学习列表+元组+字典+集合
- Python字符串、列表、元组、字典、集合的补充实例详解
- Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】