当前位置:
首页 > Python基础教程 >
-
Python —— 数据容器详解
数据容器是编程语言中最基础的组成部分,Python 提供了丰富的数据容器类型(列表、元组、集合、字典),本文将从定义、操作、特性等方面系统梳理这些容器的使用方法。
一、列表(List)
- 定义
# 基本定义
list1 = [1, 2, 3, "hello"] # 异构元素
list2 = list() # 空列表
list3 = [i for i in range(5)]# 列表推导式
- 索引与切片
# 正向索引
print(list1[0]) # 输出: 1
# 反向索引
print(list1[-1]) # 输出: hello
# 切片操作
print(list3[1:4]) # 输出: [1, 2, 3]
- 常用操作
# 增删改
list1.append(4) # 追加元素
list1.insert(2, "new") # 插入元素
list1.remove("hello") # 删除元素
list1[0] = 100 # 修改元素
# 排序与反转
list3.sort(reverse=True) # 降序排序
list3.reverse() # 反转列表
- 遍历方式
# 基础遍历
for item in list1:
print(item)
# 带索引遍历
for idx, val in enumerate(list1):
print(f"Index {idx}: {val}")
二、元组(Tuple)
- 定义
# 基本定义
tuple1 = (1, 2, "world")
tuple2 = 3, 4, 5 # 省略括号
tuple3 = tuple([1, 2, 3]) # 转换构造
-
特性说明
不可变性:元组一旦创建,元素不可修改
轻量级:内存占用比列表小
多值返回:函数返回多值本质是返回元组
三、集合(Set) - 定义
# 基本定义
set1 = {1, 2, 3, 3} # 自动去重
set2 = set("hello") # 字符集合
set3 = set() # 空集合
- 集合操作
# 成员运算
print(2 in set1) # 输出: True
# 集合运算
setA = {1,2,3}
setB = {3,4,5}
print(setA.union(setB)) # 并集 {1,2,3,4,5}
print(setA.intersection(setB)) # 交集 {3}
四、字典(Dictionary)
- 定义
# 基本定义
dict1 = {"name": "Tom", "age": 18}
dict2 = dict([("a",1), ("b",2)]) # 键值对列表
dict3 = {k: v for k, v in zip(["x","y"], [10,20])} # 推导式
- 常用操作
# 增删改查
dict1["gender"] = "male" # 新增键值对
print(dict1.get("age")) # 查询值
del dict1["age"] # 删除键
# 遍历方式
for key in dict1:
print(key, dict1[key])
for k, v in dict1.items():
print(k, v)
五、数据容器通用操作
操作类型 | 适用容器 | 示例代码 |
---|---|---|
长度获取 | 所有容器 | len(container) |
成员检查 | 所有容器 | value in container |
切片操作 | 列表 / 元组 / 字符串 | container[start:end] |
迭代遍历 | 所有容器 | for item in container |
类型转换 | 所有容器 | list()/tuple()/set()/dict() |
六、性能对比 | ||
操作类型 | 列表 | 元组 |
------- | ---- | ---- |
随机访问 | O(1) | O(1) |
插入 / 删除 | O(n) | 不支持 |
成员检查 | O(n) | O(n) |
内存占用 | 中等 | 最小 |
注意:集合和字典的高效查询基于哈希表实现,但会消耗更多内存 |
总结
列表:动态数组,支持增删改查,最常用容器
元组:不可变序列,适合固定数据存储
集合:无序去重,高效成员检查
字典:键值对存储,快速查找
本文作者: 一点浩然气~
本文链接: https://www.cnblogs.com/FrostBoy/p/18797405
栏目列表
最新更新
求1000阶乘的结果末尾有多少个0
详解MyBatis延迟加载是如何实现的
IDEA 控制台中文乱码4种解决方案
SpringBoot中版本兼容性处理的实现示例
Spring的IOC解决程序耦合的实现
详解Spring多数据源如何切换
Java报错:UnsupportedOperationException in Col
使用Spring Batch实现批处理任务的详细教程
java中怎么将多个音频文件拼接合成一个
SpringBoot整合ES多个精确值查询 terms功能实
SQL Server 中的数据类型隐式转换问题
SQL Server中T-SQL 数据类型转换详解
sqlserver 数据类型转换小实验
SQL Server数据类型转换方法
SQL Server 2017无法连接到服务器的问题解决
SQLServer地址搜索性能优化
Sql Server查询性能优化之不可小觑的书签查
SQL Server数据库的高性能优化经验总结
SQL SERVER性能优化综述(很好的总结,不要错
开启SQLSERVER数据库缓存依赖优化网站性能
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比