Python列表练习题

通过这些精心设计的练习题,从不同角度和难度提升你的Python列表操作能力。每道题都提供详细解答和说明。

基础练习

简单 练习1:列表基本操作

创建一个包含1到10的列表,然后完成以下操作:

  1. 打印所有偶数
  2. 计算列表所有元素的和
  3. 找出最大值和最小值
查看解答

# 创建列表
numbers = list(range(1, 11))

# 1. 打印偶数
evens = [num for num in numbers if num % 2 == 0]
print("偶数:", evens)  # [2, 4, 6, 8, 10]

# 2. 计算和
total = sum(numbers)
print("总和:", total)  # 55

# 3. 最大值和最小值
max_num = max(numbers)
min_num = min(numbers)
print(f"最大值:{max_num},最小值:{min_num}")  # 最大值:10,最小值:1
                            

简单 练习2:列表元素操作

给定两个列表,完成以下操作:

  1. 合并两个列表
  2. 删除重复元素
  3. 按升序排序
查看解答

list1 = [1, 3, 5, 3, 7]
list2 = [2, 5, 6, 7, 4]

# 1. 合并列表
merged = list1 + list2
print("合并后:", merged)  # [1, 3, 5, 3, 7, 2, 5, 6, 7, 4]

# 2. 删除重复元素
unique = list(set(merged))
print("去重后:", unique)  # [1, 2, 3, 4, 5, 6, 7]

# 3. 升序排序
sorted_list = sorted(unique)
print("排序后:", sorted_list)  # [1, 2, 3, 4, 5, 6, 7]
                            

进阶练习

中等 练习1:列表推导式

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

  1. 生成一个包含1-100中所有3的倍数的列表
  2. 将字符串列表中的所有单词转换为大写
  3. 过滤出列表中所有长度大于3的单词
查看解答

# 1. 3的倍数
multiples = [x for x in range(1, 101) if x % 3 == 0]
print("3的倍数:", multiples)

# 2. 转换为大写
words = ['hello', 'world', 'python', 'list']
upper_words = [word.upper() for word in words]
print("大写转换:", upper_words)  # ['HELLO', 'WORLD', 'PYTHON', 'LIST']

# 3. 过滤长单词
long_words = [word for word in words if len(word) > 3]
print("长单词:", long_words)  # ['hello', 'world', 'python']
                            

中等 练习2:矩阵操作

给定一个3x3矩阵(二维列表),完成以下操作:

  1. 计算每行的和
  2. 计算每列的和
  3. 计算对角线元素的和
查看解答

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# 1. 计算每行的和
row_sums = [sum(row) for row in matrix]
print("每行的和:", row_sums)  # [6, 15, 24]

# 2. 计算每列的和
col_sums = [sum(col) for col in zip(*matrix)]
print("每列的和:", col_sums)  # [12, 15, 18]

# 3. 计算对角线和
main_diagonal = sum(matrix[i][i] for i in range(len(matrix)))
print("主对角线和:", main_diagonal)  # 15
                            

实际应用

困难 练习1:成绩管理系统

实现一个简单的成绩管理系统,要求:

  1. 添加学生成绩
  2. 计算平均分
  3. 查找最高分和最低分
  4. 按成绩排序
查看解答

class ScoreManager:
    def __init__(self):
        self.scores = []  # [(name, score), ...]
    
    def add_score(self, name, score):
        self.scores.append((name, score))
    
    def get_average(self):
        if not self.scores:
            return 0
        return sum(score for _, score in self.scores) / len(self.scores)
    
    def get_highest(self):
        if not self.scores:
            return None
        return max(self.scores, key=lambda x: x[1])
    
    def get_lowest(self):
        if not self.scores:
            return None
        return min(self.scores, key=lambda x: x[1])
    
    def sort_scores(self):
        return sorted(self.scores, key=lambda x: x[1], reverse=True)

# 使用示例
manager = ScoreManager()
manager.add_score("Alice", 85)
manager.add_score("Bob", 92)
manager.add_score("Charlie", 78)

print("平均分:", manager.get_average())
print("最高分:", manager.get_highest())
print("最低分:", manager.get_lowest())
print("排序后:", manager.sort_scores())
                            

困难 练习2:购物车系统

实现一个简单的购物车系统,包含以下功能:

  1. 添加商品(名称、价格、数量)
  2. 删除商品
  3. 修改商品数量
  4. 计算总价
查看解答

class ShoppingCart:
    def __init__(self):
        self.items = []  # [(name, price, quantity), ...]
    
    def add_item(self, name, price, quantity=1):
        for i, (item_name, _, _) in enumerate(self.items):
            if item_name == name:
                self.items[i] = (name, price, self.items[i][2] + quantity)
                return
        self.items.append((name, price, quantity))
    
    def remove_item(self, name):
        self.items = [item for item in self.items if item[0] != name]
    
    def update_quantity(self, name, quantity):
        for i, (item_name, price, _) in enumerate(self.items):
            if item_name == name:
                self.items[i] = (name, price, quantity)
                return
    
    def get_total(self):
        return sum(price * quantity for _, price, quantity in self.items)
    
    def view_cart(self):
        return [(name, price, quantity, price * quantity) 
                for name, price, quantity in self.items]

# 使用示例
cart = ShoppingCart()
cart.add_item("苹果", 5.0, 3)
cart.add_item("香蕉", 3.5, 2)
cart.add_item("橙子", 4.0, 4)

print("购物车内容:", cart.view_cart())
print("总价:", cart.get_total())

cart.update_quantity("苹果", 5)
cart.remove_item("香蕉")
print("更新后的购物车:", cart.view_cart())
                            

算法实现

困难 练习1:排序算法实现

实现以下排序算法:

  1. 冒泡排序
  2. 选择排序
  3. 插入排序
查看解答

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

def selection_sort(arr):
    n = len(arr)
    for i in range(n):
        min_idx = i
        for j in range(i+1, n):
            if arr[j] < arr[min_idx]:
                min_idx = j
        arr[i], arr[min_idx] = arr[min_idx], arr[i]
    return arr

def insertion_sort(arr):
    for i in range(1, len(arr)):
        key = arr[i]
        j = i-1
        while j >= 0 and arr[j] > key:
            arr[j+1] = arr[j]
            j -= 1
        arr[j+1] = key
    return arr

# 测试
numbers = [64, 34, 25, 12, 22, 11, 90]
print("冒泡排序:", bubble_sort(numbers.copy()))
print("选择排序:", selection_sort(numbers.copy()))
print("插入排序:", insertion_sort(numbers.copy()))