📝 第7天:数据结构练习 - 魔法容器大挑战
🎉 欢迎来到数据结构的练习环节!通过前面的学习,我们已经了解了 Python 的四大核心数据结构:列表、元组、字典和集合。现在是时候通过练习来巩固这些知识了!
🎯 练习目标
- 掌握列表的高级操作和列表推导式
- 理解元组的特性和应用场景
- 熟练使用字典的各种方法和字典推导式
- 了解集合的特性和集合运算
- 能够根据不同场景选择合适的数据结构
🏋️ 基础练习
1. 列表推导式练习
任务描述: 使用列表推导式完成以下任务:
- 创建一个包含1到100之间所有偶数的列表
- 创建一个包含1到20之间所有数的平方的列表
- 过滤出列表
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]中能被3整除的数 - 将列表
["apple", "banana", "orange", "grape"]中的每个单词转换为大写 - 生成一个二维列表,表示一个3x3的乘法表
示例代码:
python
# 示例:创建一个包含1到10之间所有偶数的列表
even_numbers = [x for x in range(1, 11) if x % 2 == 0]
print(even_numbers) # 输出: [2, 4, 6, 8, 10]2. 列表高级操作练习
任务描述: 给定一个列表 numbers = [5, 2, 9, 1, 5, 6, 3, 8, 4, 7],完成以下操作:
- 对列表进行排序(升序和降序)
- 找出列表中的最大值和最小值
- 计算列表中所有元素的和
- 统计列表中某个元素(如5)出现的次数
- 移除列表中的重复元素
示例代码:
python
numbers = [5, 2, 9, 1, 5, 6, 3, 8, 4, 7]
# 排序(升序)
numbers_sorted = sorted(numbers)
print(numbers_sorted) # 输出: [1, 2, 3, 4, 5, 5, 6, 7, 8, 9]3. 元组练习
任务描述:
- 创建一个包含个人信息(姓名、年龄、城市)的元组
- 尝试修改元组中的元素(观察会发生什么)
- 实现一个函数,返回多个值(使用元组)
- 使用元组解包来接收函数的多个返回值
- 创建一个包含可变对象的元组,并尝试修改其中的可变对象
示例代码:
python
# 创建元组
person = ("张三", 18, "北京")
print(person) # 输出: ("张三", 18, "北京")
# 元组解包
name, age, city = person
print(f"姓名: {name}, 年龄: {age}, 城市: {city}")4. 字典练习
任务描述:
- 创建一个表示学生信息的字典,包含姓名、年龄、成绩等字段
- 向字典中添加新的字段(如性别、班级)
- 修改字典中已有的字段值
- 删除字典中的某个字段
- 遍历字典的键、值和键值对
- 使用字典推导式创建一个字典
示例代码:
python
# 创建学生字典
student = {
"name": "张三",
"age": 18,
"score": 85
}
# 遍历字典的键值对
for key, value in student.items():
print(f"{key}: {value}")5. 集合练习
任务描述:
- 创建一个集合,并添加一些元素
- 从列表创建一个集合(去除重复元素)
- 执行集合的并集、交集和差集运算
- 检查一个元素是否在集合中
- 检查一个集合是否是另一个集合的子集
示例代码:
python
# 创建集合
s1 = {1, 2, 3, 4, 5}
s2 = {4, 5, 6, 7, 8}
# 并集运算
union_set = s1.union(s2)
print(union_set) # 输出: {1, 2, 3, 4, 5, 6, 7, 8}🚀 挑战练习
1. 学生成绩管理系统
任务描述: 使用字典和列表实现一个简单的学生成绩管理系统,具有以下功能:
- 添加学生信息(姓名、学号、各科成绩)
- 查询学生信息
- 修改学生成绩
- 删除学生信息
- 计算学生的平均成绩
- 按成绩排序显示学生列表
提示: 可以使用嵌套字典来存储学生信息,例如:
python
students = {
"001": {
"name": "张三",
"scores": {
"数学": 85,
"语文": 90,
"英语": 88
}
},
"002": {
"name": "李四",
"scores": {
"数学": 92,
"语文": 86,
"英语": 95
}
}
}2. 购物清单应用
任务描述: 使用列表和字典实现一个购物清单应用,具有以下功能:
- 添加商品到购物清单(商品名称、价格、数量)
- 从购物清单中删除商品
- 更新商品的数量
- 计算购物清单的总金额
- 按价格对商品进行排序
- 找出购物清单中最贵的商品
提示: 可以使用列表中的字典来存储商品信息,例如:
python
shopping_list = [
{"name": "苹果", "price": 5.5, "quantity": 3},
{"name": "香蕉", "price": 3.0, "quantity": 5},
{"name": "牛奶", "price": 6.8, "quantity": 2}
]💡 部分参考答案
基础练习1. 列表推导式练习
python
# 1. 创建一个包含1到100之间所有偶数的列表
even_numbers = [x for x in range(1, 101) if x % 2 == 0]
# 2. 创建一个包含1到20之间所有数的平方的列表
squares = [x**2 for x in range(1, 21)]
# 3. 过滤出列表中能被3整除的数
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
divisible_by_3 = [x for x in numbers if x % 3 == 0]
# 4. 将列表中的每个单词转换为大写
fruits = ["apple", "banana", "orange", "grape"]
uppercase_fruits = [fruit.upper() for fruit in fruits]
# 5. 生成一个3x3的乘法表
times_table = [[i*j for j in range(1, 4)] for i in range(1, 4)]基础练习4. 字典练习
python
# 创建学生字典
student = {
"name": "张三",
"age": 18,
"score": 85
}
# 向字典中添加新的字段
student["gender"] = "男"
student["class"] = "计算机科学1班"
# 修改字典中已有的字段值
student["score"] = 88
# 删除字典中的某个字段
del student["age"]
# 遍历字典的键
for key in student.keys():
print(key)
# 遍历字典的值
for value in student.values():
print(value)
# 遍历字典的键值对
for key, value in student.items():
print(f"{key}: {value}")
# 使用字典推导式创建一个字典
squares = {x: x**2 for x in range(1, 6)}挑战练习1. 学生成绩管理系统(部分实现)
python
# 初始化学生字典
students = {}
# 添加学生信息
def add_student(student_id, name, scores):
students[student_id] = {"name": name, "scores": scores}
print(f"学生 {name} 已添加")
# 计算学生的平均成绩
def calculate_average(student_id):
if student_id in students:
scores = students[student_id]["scores"].values()
return sum(scores) / len(scores) if scores else 0
return None
# 示例用法
add_student("001", "张三", {"数学": 85, "语文": 90, "英语": 88})
add_student("002", "李四", {"数学": 92, "语文": 86, "英语": 95})
# 计算并显示平均成绩
for student_id in students:
avg = calculate_average(student_id)
print(f"{students[student_id]['name']} 的平均成绩: {avg:.2f}")📚 拓展学习
如果你想进一步深入学习Python的数据结构,可以查看以下资源:
继续加油!💪 数据结构是编程的基础,掌握好它们将对你的编程能力有很大提升!




