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

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官方文档 - 数据结构
  • 《数据结构与算法图解》

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


http://www.kler.cn/a/304124.html

相关文章:

  • CSS 自定义滚动条样式
  • WPF 应用程序中使用 Prism 框架时,有多种方式可以注册服务和依赖项
  • 类型转换指令及方法调用与返回指令
  • el-input 正则表达式校验输入框不能输入汉字
  • 计算机课程管理:Spring Boot与工程认证的协同创新
  • HTML 基础架构:理解网页的骨架
  • 【HTML】可展开的顶层菜单栏
  • 拳皇97确反笔记
  • Go语言现代web开发08 if和switch分支语句
  • Spring Boot Admin集成与自定义监控告警
  • 【C++ 高频面试题】指针和引用、关于内存泄漏和野指针问题
  • 云服务器中的MinIO 配置 HTTPS 过程(图文)
  • 基于微信小程序+Java+SSM+Vue+MySQL的药店管理系统
  • Iceberg与SparkSQL查询操作整合
  • JS设计模式之适配器模式:接口天然的“翻译官”
  • 【物联网技术大作业】设计一个智能家居的应用场景
  • [项目][WebServer][项目介绍及知识铺垫][下]详细讲解
  • Java项目: 基于SpringBoot+mybatis+maven美发门店管理系统(含源码+数据库+毕业论文)
  • 【HTTP】URL的基本概念和构成
  • Unity Lua方向的面试真题详解
  • 阿里巴巴商品详情API返回值:电商精准营销的关键
  • Go语言概述
  • 人力资源管理系统员工组织与微软AD域服务系统集成案例
  • HOT 100(七)栈、堆、贪心算法
  • 游戏工作室搬砖多开怎么做
  • 一篇文章了解Pytest单元测试框架