当前位置: 首页 > news >正文

AI教你学Python 第4天:函数和模块

第四天:数据结构

一、什么是数据结构?

数据结构是计算机科学中用于组织和存储数据的特定方式。良好的数据结构能够提高数据的访问效率、修改频率和管理能力。Python提供了多种内置数据结构,如列表、元组、字典和集合,便于开发者更有效地处理数据。

二、Python中的基本数据结构

1. 列表(List)
  • 定义:列表是一个有序的可变集合,允许重复元素。使用方括号[]表示。
# 示例:定义一个列表
fruits = ['apple', 'banana', 'cherry']# 访问元素
print(fruits[1])  # 输出: banana# 添加元素
fruits.append('orange')
print(fruits)  # 输出: ['apple', 'banana', 'cherry', 'orange']
  • 基本操作
操作方法结果
添加元素list.append(x)在末尾添加元素
插入元素list.insert(i, x)在指定位置插入元素
删除元素list.remove(x)删除第一个匹配项
排序list.sort()对列表进行排序
反转list.reverse()反转列表元素顺序
列表长度len(list)返回列表的长度
2. 示例:列表的常用操作
numbers = [3, 1, 4, 1, 5, 9]# 添加
numbers.append(2)
print(numbers)  # 输出: [3, 1, 4, 1, 5, 9, 2]# 排序
numbers.sort()
print(numbers)  # 输出: [1, 1, 2, 3, 4, 5, 9]# 反转
numbers.reverse()
print(numbers)  # 输出: [9, 5, 4, 3, 2, 1, 1]
3. 元组(Tuple)
  • 定义:元组是有序的不可变集合,使用小括号()表示。适合用来存储固定数据。
# 示例:定义一个元组
colors = ('red', 'green', 'blue')# 访问元素
print(colors[0])  # 输出: red
  • 基本操作
操作方法结果
元素数量len(tuple)返回元组的长度
元素索引tuple.index(x)返回首次出现的位置
计数tuple.count(x)返回某个元素的出现次数
4. 示例:元组的使用
# 定义一个包含坐标的元组
point = (10, 20)# 获取坐标
x, y = point
print(f"X坐标: {x}, Y坐标: {y}")  # 输出: X坐标: 10, Y坐标: 20
5. 字典(Dictionary)
  • 定义:字典是无序的可变集合,使用花括号{}表示,由键(key)和值(value)对组成。
# 示例:定义一个字典
person = {'name': 'Alice','age': 25,'city': 'New York'
}# 访问元素
print(person['name'])  # 输出: Alice
  • 基本操作
操作方法结果
添加或更新元素dict[key] = value添加新键或更新已有键的值
删除元素del dict[key]删除指定键
获取所有键dict.keys()返回所有键的视图
获取所有值dict.values()返回所有值的视图
获取所有键值对dict.items()返回键值对的视图
6. 示例:字典的操作
# 添加新元素
person['occupation'] = 'Engineer'
print(person)  # 输出: {'name': 'Alice', 'age': 25, 'city': 'New York', 'occupation': 'Engineer'}# 删除元素
del person['age']
print(person)  # 输出: {'name': 'Alice', 'city': 'New York', 'occupation': 'Engineer'}
7. 集合(Set)
  • 定义:集合是无序的可变集合,元素唯一。使用花括号{}表示。
# 示例:定义一个集合
fruits_set = {'apple', 'banana', 'cherry'}# 添加元素
fruits_set.add('orange')
print(fruits_set)  # 输出: {'apple', 'banana', 'cherry', 'orange'}# 删除元素
fruits_set.remove('banana')
print(fruits_set)  # 输出: {'apple', 'cherry', 'orange'}
  • 基本操作
操作方法结果
添加元素set.add(x)添加元素
删除元素set.remove(x)删除指定元素
取交集set1.intersection(set2)返回两个集合的交集
取并集set1.union(set2)返回两个集合的并集
取差集set1.difference(set2)返回在set1但不在set2的元素
8. 示例:集合的操作
set_a = {1, 2, 3}
set_b = {3, 4, 5}
# 取交集
print(set_a.intersection(set_b))  # 输出: {3}
# 取并集
print(set_a.union(set_b))          # 输出: {1, 2, 3, 4, 5}

三、数据结构选择指南

数据结构适用场景
列表需要按顺序存储和访问数据时
元组存储不需要修改的数据
字典需要快速查找、插入、删除键值对时
集合去重和集合运算时

四、数据结构的运行流程图

以下是一个简单的示例展示了对列表和字典进行基本操作的流程图:

+---------------------+
|     初始化数据      |
+---------------------+|V
+---------------------+
|    选择数据结构    |
+---------------------+|V
+---------------------+
|    添加/更新元素    |
+---------------------+|V
+---------------------+
|    数据查询或修改   |
+---------------------+|V
+---------------------+
|     输出结果        |
+---------------------+

五、实际应用示例:购物清单程序

我们可以结合使用各种数据结构创建一个简单的购物清单程序。

def add_item(shopping_list, item):shopping_list.append(item)print(f"已添加 {item} 到购物清单。")def view_list(shopping_list):print("购物清单:")for item in shopping_list:print(f"- {item}")def remove_item(shopping_list, item):if item in shopping_list:shopping_list.remove(item)print(f"已从购物清单移除 {item}。")else:print(f"{item} 不在购物清单中。")# 示例:购物清单操作
shopping_list = []
add_item(shopping_list, '牛奶')
add_item(shopping_list, '面包')
view_list(shopping_list)
remove_item(shopping_list, '牛奶')
view_list(shopping_list)

六、习题

  1. 创建一个包含五个整数的列表,并实现函数来计算和、均值及中位数。
  2. 定义一个包含用户信息的字典,要求能够添加、删除和更新用户信息。
  3. 使用集合实现一个简单的学生管理系统,添加、查找和删除学生记录。

七、总结

在Python中,数据结构是组织和管理数据的基础。选择合适的数据结构可以有效提高程序的性能和可维护性。今天我们讨论了列表、元组、字典和集合的基本操作和特性,以及它们的应用场景。

参考资源

  • Python官方文档 - 数据结构
  • 《数据结构与算法图解》

怎么样今天的内容还满意吗?再次感谢观众老爷的观看。
最后,祝您早日实现财务自由,还请给个赞,谢谢!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MySQL下载安装
  • 可信多视图分类(TCM ETCM)算法实现数字序列的分类---基因致病的诊断
  • JAVA学习-练习试用Java实现“子集 II”
  • 代码随想录训练营 Day58打卡 图论part08 拓扑排序 dijkstra朴素版 + 堆优化版
  • 机器学习和深度学习的常见概念总结(多原创图)
  • 设计模式(Design Patterns)
  • Unity程序基础框架
  • Cisco Catalyst 9000 Series Switches, IOS XE Release 17.15.1 ED
  • Android应用性能优化
  • C#中判断socket是否已断开的方法
  • 基于java网吧管理系统设计与实现
  • vue3.0 使用echarts与echarts-gl 实现3D饼图
  • 828华为云征文 | 华为云FlexusX实例下的Kafka集群部署实践与性能优化
  • Unity 粒子系统参数说明
  • Qt与MQTT交互通信
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 【刷算法】从上往下打印二叉树
  • 3.7、@ResponseBody 和 @RestController
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • es6
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • Vue官网教程学习过程中值得记录的一些事情
  • Vultr 教程目录
  • Web Storage相关
  • 分享几个不错的工具
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 前端面试题总结
  • 为什么要用IPython/Jupyter?
  • 项目管理碎碎念系列之一:干系人管理
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • # Maven错误Error executing Maven
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #每日一题合集#牛客JZ23-JZ33
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (转) Face-Resources
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • ***监测系统的构建(chkrootkit )
  • .net core 使用js,.net core 使用javascript,在.net core项目中怎么使用javascript
  • .Net Core 中间件与过滤器
  • .net2005怎么读string形的xml,不是xml文件。
  • .netcore如何运行环境安装到Linux服务器
  • /etc/shadow字段详解
  • /etc/sudoers (root权限管理)
  • @AliasFor 使用
  • @Bean有哪些属性
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • [] 与 [[]], -gt 与 > 的比较
  • [20150629]简单的加密连接.txt