本文主要是介绍Python容器类型之列表/字典/元组/集合方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《Python容器类型之列表/字典/元组/集合方式》:本文主要介绍Python容器类型之列表/字典/元组/集合方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教...
1. 列表(List) - 有序可变序列
1.1 基本特性
- 有序排列:元素按插入顺序存储
- 可变类型:支持原地修改
- 允许重复:www.chinasem.cn可存储相同值的元素
- 异构数据:可混合不同类型元素
# 创建方式 fruits = ['appandroidle', 'banana', 'cherry'] numbers = list(range(1, 6)) # [1,2,3,4,5] mixed = [1, 'text', True, 3.14] # 混合类型
1.2 核心操作
操作 | 示例 | 说明 |
---|---|---|
索引访问 | fruits[0] → ‘apple’ | 支持负数索引(-1表最后) |
切片操作 | numbers[1:3] → [2,3] | 含头不含尾 |
添加元素 | fruits.append(‘orange’) | 末尾追加 |
插入元素 | fruits.insert(1, ‘mango’) | 指定位置插入 |
删除元素 | del fruits[2] | 删除指定索引元素 |
列表推导式 | [x**2 for x in numbers] | 快速生成新列表 |
1.3 应用场景
- 数据收集与批量处理
- 实现栈/队列数据结构
- 临时存储计算结果
- CSV文件行记录处理
2. 字典(Dict) - 键值对映射
2.1 基本特性
- 键值对存储:{key: value} 结构
- 无序排列(python 3.7+ 保持插入顺序)
- 键必须可javascript哈希(不可变类型)
- 快速查找:O(1)时间复杂度
# 创建方式 person = {'name': 'Alice', 'age': 25} scores = dict(math=90, english=85) # 关键字创建 empty_dict = {} # 空字典
2.2 核心操作
操作 | 示例 | 说明 |
---|---|---|
获取值 | person[‘name’] → ‘Alice’ | KeyError处理建议用get() |
添加/修改 | person[‘gender’] = ‘female’ | 自动新增或更新 |
删除键 | del person[‘age’] | 删除指定键 |
遍历键值对 | for k, v in person.items(): | 同时获取键值 |
字典推导式 | {k:v*2 for k,v in d.items()} | 快速生成新字典 |
2.3 应用场景
3. 元组(Tuple) - 不可变序列
3.1 基本特性
- 不可变类型:创建后不能修改
- 有序排列:类似列表
- 可哈希:可用作字典键
- 性能优化:比列表更节省内存
# 创建方式 colors = ('red', 'green', 'blue') single_element = (42,) # 注意逗号 coordinates = tuple([1.2, 3.4])
3.2 核心应用
- 函数多返回值封装
- 保护数据不被修改
- 字典键值存储
- 格式化字符串参数
4. 集合(Set) - 唯一元素容器
4.1 基本特性
- 无序排列:无索引概念
- 元素唯一:自动去重
- 可变类型:可增删元素
- 数学运算:支持交/并/差集
# 创建方式 vowels = {'a', 'e', 'i', 'o', 'u'} numbers = set([1,2,3,2,1]) # {1,2,3} empty_set = set() # 注意不能用 {}
4.2 核心操作
操作 | 示例 | 说明 |
---|---|---|
添加元素 | vowels.add(‘y’) | 新增元素 |
移除元素 | vowels.remove(‘i’) | KeyError需处理 |
集合运算 | set1|set2 → 并集 | 支持 &交集 -差集 |
成员检测 | ‘a&rsquoChina编程; in vowels → True | 快速判断存在性 |
5. 容器对比总结
特性 | 列表 | 字典 | 元组 | 集合 |
---|---|---|---|---|
有序性 | ✅ | ❌/✅* | ✅ | ❌ |
可变性 | ✅ | ✅ | ❌ | ✅ |
元素重复 | 允许 | 键唯一 | 允许 | 元素唯一 |
查找速度 | O(n) | O(1) | O(n) | O(1) |
典型应用 | 数据收集 | 键值映射 | 数据保护 | 去重/运算 |
*注:Python 3.7+ 字典保持插入顺序
6. 嵌套使用案例
6.1 列表字典组合
students = [ {'name': 'Alice', 'scores': [85, 92, 78]}, {'name': 'Bob', 'scores': [76, 88, 95]} ] # 计算平均分 for student in students: avg = sum(student['scores']) / len(student['scores']) print(f"{student['name']} 平均分:{avg:.1f}")
6.2 字典值存储集合
department = { 'sales': {'Alice', 'Bob', 'Charlie'}, 'dev': {'David', 'Eve'} } # javascript合并所有部门成员 all_members = set() for members in department.values(): all_members.update(members)
7. 性能优化建议
- 列表 vs 集合查找:
# 列表查找(O(n)) if target in big_list: ... # 转换为集合查找(O(1)) if target in set(big_list): ...
字典键设计:
- 使用不可变类型作为键
- 优先选择简单数据结构
选择合适容器:
- 需要顺序 → 列表/元组
- 快速查找 → 字典/集合
- 数据不可变 → 元组
- 元素唯一 → 集合
8. 进阶技巧
生成器表达式:节省内存处理大数据
sum(x**2 for x in range(1000000))
collections模块:
defaultdict
:自动初始化字典值Counter
:快速元素计数deque
:高效双端队列
*注:掌握这些容器类型的特点和适用场景,将显著提升Python编程效率和代码质量。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持China编程(www.chinasem.cn)。
这篇关于Python容器类型之列表/字典/元组/集合方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!