Skip to content

📝 第7天:数据结构练习 - 魔法容器大挑战

🎉 欢迎来到数据结构的练习环节!通过前面的学习,我们已经了解了 Python 的四大核心数据结构:列表、元组、字典和集合。现在是时候通过练习来巩固这些知识了!

🎯 练习目标

  • 掌握列表的高级操作和列表推导式
  • 理解元组的特性和应用场景
  • 熟练使用字典的各种方法和字典推导式
  • 了解集合的特性和集合运算
  • 能够根据不同场景选择合适的数据结构

🏋️ 基础练习

1. 列表推导式练习

任务描述: 使用列表推导式完成以下任务:

  1. 创建一个包含1到100之间所有偶数的列表
  2. 创建一个包含1到20之间所有数的平方的列表
  3. 过滤出列表 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 中能被3整除的数
  4. 将列表 ["apple", "banana", "orange", "grape"] 中的每个单词转换为大写
  5. 生成一个二维列表,表示一个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],完成以下操作:

  1. 对列表进行排序(升序和降序)
  2. 找出列表中的最大值和最小值
  3. 计算列表中所有元素的和
  4. 统计列表中某个元素(如5)出现的次数
  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. 元组练习

任务描述:

  1. 创建一个包含个人信息(姓名、年龄、城市)的元组
  2. 尝试修改元组中的元素(观察会发生什么)
  3. 实现一个函数,返回多个值(使用元组)
  4. 使用元组解包来接收函数的多个返回值
  5. 创建一个包含可变对象的元组,并尝试修改其中的可变对象

示例代码:

python
# 创建元组
person = ("张三", 18, "北京")
print(person)  # 输出: ("张三", 18, "北京")

# 元组解包
name, age, city = person
print(f"姓名: {name}, 年龄: {age}, 城市: {city}")

4. 字典练习

任务描述:

  1. 创建一个表示学生信息的字典,包含姓名、年龄、成绩等字段
  2. 向字典中添加新的字段(如性别、班级)
  3. 修改字典中已有的字段值
  4. 删除字典中的某个字段
  5. 遍历字典的键、值和键值对
  6. 使用字典推导式创建一个字典

示例代码:

python
# 创建学生字典
student = {
    "name": "张三",
    "age": 18,
    "score": 85
}

# 遍历字典的键值对
for key, value in student.items():
    print(f"{key}: {value}")

5. 集合练习

任务描述:

  1. 创建一个集合,并添加一些元素
  2. 从列表创建一个集合(去除重复元素)
  3. 执行集合的并集、交集和差集运算
  4. 检查一个元素是否在集合中
  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. 学生成绩管理系统

任务描述: 使用字典和列表实现一个简单的学生成绩管理系统,具有以下功能:

  1. 添加学生信息(姓名、学号、各科成绩)
  2. 查询学生信息
  3. 修改学生成绩
  4. 删除学生信息
  5. 计算学生的平均成绩
  6. 按成绩排序显示学生列表

提示: 可以使用嵌套字典来存储学生信息,例如:

python
students = {
    "001": {
        "name": "张三",
        "scores": {
            "数学": 85,
            "语文": 90,
            "英语": 88
        }
    },
    "002": {
        "name": "李四",
        "scores": {
            "数学": 92,
            "语文": 86,
            "英语": 95
        }
    }
}

2. 购物清单应用

任务描述: 使用列表和字典实现一个购物清单应用,具有以下功能:

  1. 添加商品到购物清单(商品名称、价格、数量)
  2. 从购物清单中删除商品
  3. 更新商品的数量
  4. 计算购物清单的总金额
  5. 按价格对商品进行排序
  6. 找出购物清单中最贵的商品

提示: 可以使用列表中的字典来存储商品信息,例如:

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的数据结构,可以查看以下资源:

继续加油!💪 数据结构是编程的基础,掌握好它们将对你的编程能力有很大提升!

© 2025 技术博客. All rights reserved by 老周有AI