作者: 中文编程倡导者------ 李金雨
联系方式: wbtm2718@qq.com
系列: python中文编程入门教程** 核心理念: AI时代必须使用中文编程,母语编程阅读效率极高"
第6篇:多维数据盒------管理大量数据
开篇引入
本课目标
- 理解什么是多维数据盒(列表)
- 掌握列表的创建和基本操作
- 掌握列表的索引和切片
- 掌握列表的遍历和常用功能
- 理解什么是标签数据盒(字典)
- 掌握字典的创建和基本操作
生活场景引入
同学们,在日常生活中,我们经常需要管理大量的数据:
- 购物清单:需要存储多个商品名称
- 成绩单:需要存储多个学生的成绩
- 通讯录:需要存储多个联系人的信息
- 图书馆:需要存储多本书的信息
在Python中,我们可以使用列表和字典来管理这些大量的数据。列表就像一个可以存储多个元素的盒子,而字典则像一个带有标签的盒子,可以通过标签快速找到对应的元素。
预期成果展示
在本课结束时,你将能够:
- 创建和使用列表存储多个数据
- 对列表进行增删改查操作
- 使用列表的常用功能
- 创建和使用字典存储键值对数据
- 对字典进行增删改查操作
- 编写一个班级成绩管理系统
概念讲解
1. 什么是多维数据盒(列表)
列表是Python中最常用的数据结构之一,它可以存储多个不同类型的元素,用方括号([])包围,元素之间用逗号分隔。
生活例子:
- 购物清单:["苹果", "香蕉", "橙子"]
- 成绩单:[85, 92, 78, 88]
- 通讯录:["张三", "李四", "王五"]
代码示例:
python
# 创建列表
购物清单 = ["苹果", "香蕉", "橙子", "葡萄"]
成绩单 = [85, 92, 78, 88, 95]
混合列表 = ["张三", 15, 1.65, True]
print(购物清单)
print(成绩单)
print(混合列表)
2. 访问元素(索引)
列表中的每个元素都有一个索引,从0开始计数。我们可以通过索引来访问列表中的元素。
生活例子:
- 购物清单中的第一个商品:购物清单[0]
- 成绩单中的第二个成绩:成绩单[1]
代码示例:
python
# 访问列表元素
购物清单 = ["苹果", "香蕉", "橙子", "葡萄"]
print("第一个商品:", 购物清单[0])
print("第二个商品:", 购物清单[1])
print("第三个商品:", 购物清单[2])
print("第四个商品:", 购物清单[3])
# 负数索引(从末尾开始计数)
print("最后一个商品:", 购物清单[-1])
print("倒数第二个商品:", 购物清单[-2])
3. 修改、添加、删除元素
我们可以对列表进行修改、添加和删除元素的操作。
修改元素:
python
# 修改列表元素
成绩单 = [85, 92, 78, 88, 95]
print("修改前:", 成绩单)
成绩单[2] = 82 # 修改第三个元素(索引为2)
print("修改后:", 成绩单)
添加元素:
append():在列表末尾添加一个元素insert():在指定位置插入一个元素extend():将另一个列表的元素添加到当前列表
python
# 添加元素
购物清单 = ["苹果", "香蕉", "橙子"]
print("添加前:", 购物清单)
# append():在末尾添加
购物清单.append("葡萄")
print("添加后:", 购物清单)
# insert():在指定位置插入
购物清单.insert(1, "梨") # 在索引1的位置插入"梨"
print("插入后:", 购物清单)
# extend():添加另一个列表的元素
其他水果 = ["草莓", "蓝莓"]
购物清单.extend(其他水果)
print("扩展后:", 购物清单)
删除元素:
del:删除指定索引的元素remove():删除指定值的元素pop():删除并返回指定索引的元素(默认为最后一个)
python
# 删除元素
购物清单 = ["苹果", "香蕉", "橙子", "葡萄", "梨"]
print("删除前:", 购物清单)
# del:删除指定索引的元素
del 购物清单[1] # 删除索引为1的元素
print("删除后:", 购物清单)
# remove():删除指定值的元素
购物清单.remove("橙子") # 删除值为"橙子"的元素
print("删除后:", 购物清单)
# pop():删除并返回指定索引的元素
被删除的元素 = 购物清单.pop() # 默认为最后一个元素
print("被删除的元素:", 被删除的元素)
print("删除后:", 购物清单)
4. 列表切片
列表切片用于获取列表的一部分,语法为列表[起始索引:结束索引:步长]。
生活例子:
- 获取购物清单的前两个商品:购物清单[0:2]
- 获取成绩单的中间三个成绩:成绩单[1:4]
代码示例:
python
# 列表切片
数字列表 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 获取从索引0到2的元素(不包括2)
print(数字列表[0:2]) # 输出:[0, 1]
# 获取从索引2到末尾的元素
print(数字列表[2:]) # 输出:[2, 3, 4, 5, 6, 7, 8, 9]
# 获取从开头到索引5的元素(不包括5)
print(数字列表[:5]) # 输出:[0, 1, 2, 3, 4]
# 获取所有元素
print(数字列表[:]) # 输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 步长为2,获取偶数位置的元素
print(数字列表[::2]) # 输出:[0, 2, 4, 6, 8]
# 步长为-1,反转列表
print(数字列表[::-1]) # 输出:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
5. 列表遍历(for循环)
我们可以使用for循环来遍历列表中的每个元素。
生活例子:
- 逐个查看购物清单中的商品
- 逐个处理成绩单中的成绩
代码示例:
python
# 列表遍历
购物清单 = ["苹果", "香蕉", "橙子", "葡萄"]
# 方法1:直接遍历元素
print("方法1:直接遍历元素")
for 商品 in 购物清单:
print("我需要买:" + 商品)
# 方法2:使用索引遍历
print("\n方法2:使用索引遍历")
for i in range(len(购物清单)):
print(f"第{i+1}个商品:{购物清单[i]}")
# 方法3:使用enumerate()函数
print("\n方法3:使用enumerate()函数")
for 索引, 商品 in enumerate(购物清单, 1):
print(f"第{索引}个商品:{商品}")
6. 常用列表功能
Python提供了许多内置函数和方法来操作列表:
len():获取列表长度sum():计算列表中数字的和max():获取列表中的最大值min():获取列表中的最小值sort():对列表进行排序sorted():返回排序后的列表,不修改原列表reverse():反转列表index():查找元素的索引count():统计元素出现的次数
代码示例:
python
# 常用列表功能
成绩单 = [85, 92, 78, 88, 95]
print("成绩单:", 成绩单)
print("列表长度:", len(成绩单))
print("总分:", sum(成绩单))
print("最高分:", max(成绩单))
print("最低分:", min(成绩单))
print("平均分:", sum(成绩单) / len(成绩单))
# 排序
成绩单.sort()
print("排序后:", 成绩单)
# 反转
成绩单.reverse()
print("反转后:", 成绩单)
# 查找元素
成绩 = 88
print(f"{成绩}的索引:", 成绩单.index(成绩))
# 统计元素出现的次数
print(f"{成绩}出现的次数:", 成绩单.count(成绩))
7. 标签数据盒(字典)
字典是Python中另一种重要的数据结构,它存储键值对,用花括号({})包围,键和值之间用冒号(:)分隔,键值对之间用逗号分隔。
生活例子:
- 学生档案:{"姓名": "张三", "年龄": 15, "成绩": 85}
- 商品信息:{"名称": "苹果", "价格": 5, "数量": 10}
代码示例:
python
# 创建字典
学生 = {
"姓名": "张三",
"年龄": 15,
"班级": "高一(1)班",
"成绩": 85
}
商品 = {
"名称": "苹果",
"价格": 5,
"数量": 10,
"产地": "山东"
}
print(学生)
print(商品)
8. 字典的增删改查
访问值:通过键来访问值
python
# 访问字典值
学生 = {"姓名": "张三", "年龄": 15, "成绩": 85}
print("姓名:", 学生["姓名"])
print("年龄:", 学生["年龄"])
print("成绩:", 学生["成绩"])
# 使用get()方法访问值(如果键不存在,返回默认值)
print("性别:", 学生.get("性别", "未知"))
修改值:通过键来修改值
python
# 修改字典值
学生 = {"姓名": "张三", "年龄": 15, "成绩": 85}
print("修改前:", 学生)
学生["成绩"] = 90 # 修改成绩
学生["性别"] = "男" # 添加新的键值对
print("修改后:", 学生)
添加键值对:直接赋值
python
# 添加键值对
学生 = {"姓名": "张三", "年龄": 15}
print("添加前:", 学生)
学生["班级"] = "高一(1)班"
学生["成绩"] = 85
print("添加后:", 学生)
删除键值对:
del:删除指定键的键值对pop():删除并返回指定键的值clear():清空字典
python
# 删除键值对
学生 = {"姓名": "张三", "年龄": 15, "班级": "高一(1)班", "成绩": 85}
print("删除前:", 学生)
# del:删除指定键的键值对
del 学生["班级"]
print("删除后:", 学生)
# pop():删除并返回指定键的值
成绩 = 学生.pop("成绩")
print("被删除的成绩:", 成绩)
print("删除后:", 学生)
# clear():清空字典
学生.clear()
print("清空后:", 学生)
遍历字典:
python
# 遍历字典
学生 = {"姓名": "张三", "年龄": 15, "班级": "高一(1)班", "成绩": 85}
# 遍历键
print("遍历键:")
for 键 in 学生:
print(键)
# 遍历值
print("\n遍历值:")
for 值 in 学生.values():
print(值)
# 遍历键值对
print("\n遍历键值对:")
for 键, 值 in 学生.items():
print(f"{键}:{值}")
动手实践
基础练习(必做)
-
班级成绩管理系统 :编写一个程序,管理班级学生的成绩
python# 班级成绩管理系统 学生成绩 = { "张三": 85, "李四": 92, "王五": 78, "赵六": 88, "钱七": 95 } # 打印所有学生的成绩 print("班级成绩表:") for 姓名, 成绩 in 学生成绩.items(): print(f"{姓名}:{成绩}") # 计算平均分 总分 = sum(学生成绩.values()) 平均分 = 总分 / len(学生成绩) print(f"\n平均分:{平均分:.2f}") # 找出最高分和最低分 最高分 = max(学生成绩.values()) 最低分 = min(学生成绩.values()) # 找出最高分和最低分的学生 for 姓名, 成绩 in 学生成绩.items(): if 成绩 == 最高分: print(f"\n最高分:{姓名},{成绩}分") if 成绩 == 最低分: print(f"最低分:{姓名},{成绩}分") -
简易通讯录 :编写一个程序,管理联系人信息
python# 简易通讯录 通讯录 = [ {"姓名": "张三", "电话": "13812345678", "邮箱": "zhangsan@example.com"}, {"姓名": "李四", "电话": "13987654321", "邮箱": "lisi@example.com"}, {"姓名": "王五", "电话": "13765432109", "邮箱": "wangwu@example.com"} ] # 打印所有联系人 print("通讯录:") for 联系人 in 通讯录: print(f"姓名:{联系人['姓名']},电话:{联系人['电话']},邮箱:{联系人['邮箱']}") # 添加新联系人 新联系人 = {"姓名": "赵六", "电话": "13612345678", "邮箱": "zhaoliu@example.com"} 通讯录.append(新联系人) print("\n添加新联系人后:") for 联系人 in 通讯录: print(f"姓名:{联系人['姓名']},电话:{联系人['电话']},邮箱:{联系人['邮箱']}")
进阶练习(选做)
-
购物车程序 :编写一个程序,模拟购物车功能
python# 购物车程序 购物车 = [] while True: print("\n购物车管理系统") print("1. 添加商品") print("2. 查看购物车") print("3. 修改商品数量") print("4. 删除商品") print("5. 结算") print("6. 退出") 选择 = input("请输入你的选择:") if 选择 == "1": 商品名称 = input("请输入商品名称:") 价格 = float(input("请输入商品价格:")) 数量 = int(input("请输入商品数量:")) 购物车.append({"名称": 商品名称, "价格": 价格, "数量": 数量}) print("商品添加成功!") elif 选择 == "2": print("\n购物车内容:") if 购物车: for i, 商品 in enumerate(购物车, 1): 小计 = 商品["价格"] * 商品["数量"] print(f"{i}. {商品['名称']} - 单价:{商品['价格']},数量:{商品['数量']},小计:{小计}") else: print("购物车为空!") elif 选择 == "3": if 购物车: 索引 = int(input("请输入要修改的商品序号:")) - 1 if 0 <= 索引 < len(购物车): 新数量 = int(input("请输入新的数量:")) 购物车[索引]["数量"] = 新数量 print("商品数量修改成功!") else: print("商品序号不存在!") else: print("购物车为空!") elif 选择 == "4": if 购物车: 索引 = int(input("请输入要删除的商品序号:")) - 1 if 0 <= 索引 < len(购物车): 购物车.pop(索引) print("商品删除成功!") else: print("商品序号不存在!") else: print("购物车为空!") elif 选择 == "5": if 购物车: 总价 = 0 print("\n结算清单:") for 商品 in 购物车: 小计 = 商品["价格"] * 商品["数量"] 总价 += 小计 print(f"{商品['名称']} - 单价:{商品['价格']},数量:{商品['数量']},小计:{小计}") print(f"\n总价:{总价}") else: print("购物车为空!") elif 选择 == "6": print("谢谢使用,再见!") break else: print("输入错误,请重新输入!") -
单词本程序 :编写一个程序,管理英语单词
python# 单词本程序 单词本 = [ {"单词": "apple", "释义": "苹果"}, {"单词": "banana", "释义": "香蕉"}, {"单词": "orange", "释义": "橙子"} ] while True: print("\n单词本管理系统") print("1. 添加单词") print("2. 查看单词") print("3. 修改单词") print("4. 删除单词") print("5. 退出") 选择 = input("请输入你的选择:") if 选择 == "1": 单词 = input("请输入单词:") 释义 = input("请输入释义:") 单词本.append({"单词": 单词, "释义": 释义}) print("单词添加成功!") elif 选择 == "2": print("\n单词列表:") for i, 条目 in enumerate(单词本, 1): print(f"{i}. {条目['单词']} - {条目['释义']}") elif 选择 == "3": if 单词本: 索引 = int(input("请输入要修改的单词序号:")) - 1 if 0 <= 索引 < len(单词本): 新单词 = input("请输入新单词:") 新释义 = input("请输入新释义:") 单词本[索引]["单词"] = 新单词 单词本[索引]["释义"] = 新释义 print("单词修改成功!") else: print("单词序号不存在!") else: print("单词本为空!") elif 选择 == "4": if 单词本: 索引 = int(input("请输入要删除的单词序号:")) - 1 if 0 <= 索引 < len(单词本): 单词本.pop(索引) print("单词删除成功!") else: print("单词序号不存在!") else: print("单词本为空!") elif 选择 == "5": print("谢谢使用,再见!") break else: print("输入错误,请重新输入!")
知识总结
核心概念回顾
- 列表:存储多个元素的有序集合
- 索引:列表中元素的位置,从0开始
- 切片:获取列表的一部分
- 字典:存储键值对的无序集合
- 键:字典中用于查找值的标识符
- 值:字典中与键关联的数据
关键代码速查
| 功能 | 代码 | 说明 |
|---|---|---|
| 创建列表 | 列表 = [元素1, 元素2, 元素3] |
创建一个包含多个元素的列表 |
| 访问列表元素 | 列表[索引] |
访问列表中指定索引的元素 |
| 添加元素 | 列表.append(元素) |
在列表末尾添加一个元素 |
| 删除元素 | del 列表[索引] |
删除列表中指定索引的元素 |
| 列表长度 | len(列表) |
获取列表的长度 |
| 列表排序 | 列表.sort() |
对列表进行排序 |
| 创建字典 | 字典 = {"键1": 值1, "键2": 值2} |
创建一个包含多个键值对的字典 |
| 访问字典值 | 字典["键"] |
访问字典中指定键的值 |
| 添加/修改键值对 | 字典["键"] = 值 |
添加或修改字典中的键值对 |
| 删除键值对 | del 字典["键"] |
删除字典中指定键的键值对 |
| 遍历字典 | for 键, 值 in 字典.items(): |
遍历字典中的所有键值对 |
常见错误提醒
- 索引越界:访问列表中不存在的索引
- 键不存在:访问字典中不存在的键
- 类型错误:在不支持的类型上使用列表或字典操作
- 可变对象:列表是可变对象,字典的键必须是不可变对象
- 顺序问题:字典在Python 3.7+中保持插入顺序,但在之前的版本中不保证顺序
课后作业
巩固练习题
- 编写一个程序,创建一个包含10个随机数的列表,然后对其进行排序
- 编写一个程序,创建一个字典,存储5个学生的姓名和成绩,然后计算平均分
创意编程题
- 编写一个程序,模拟一个简单的图书馆管理系统,存储图书信息(书名、作者、ISBN)
- 编写一个程序,创建一个通讯录,支持添加、删除、修改和查询联系人信息
下篇预习提示
在下一篇中,我们将学习函数,了解如何将代码组织成可重用的功能块。请思考:
- 生活中有哪些可以被抽象为函数的操作?
- 如何将重复的代码组织成函数?
学习交流
如果你在学习过程中遇到任何问题,欢迎联系我:
- ** 视频号,"时空系"
- 邮箱: wbtm2718@qq.com
- 其他提示:
- 本人正在开发纯中文编程语言和编译器,有兴趣的可以交流
- 本人正在写一本基于中国母语思维习惯的数学教材,可以让你一年内学完从初中到研究生的数学,而且可以让你快速掌握人工智能的关键数学知识,有兴趣的可以交流
祝你学习愉快!