You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在线图书馆图书删除功能实现及代码问题修正

修正在线图书馆图书删除功能的实现方案

常见问题分析

原BookFunction类的remove方法通常会出现以下逻辑错误:

  • 正向遍历图书列表时直接删除元素,导致列表索引移位,后续元素被迭代器跳过,无法精准处理所有匹配项
  • ISBN匹配逻辑不严谨(如未处理字符串大小写、类型不一致等),导致无法定位目标图书

修正后的实现代码

方案1:批量删除所有匹配ISBN的图书(推荐)

这种方式通过列表推导式过滤图书,逻辑简洁且不会出现索引异常:

class BookFunction:
    def __init__(self):
        self.books = []  # 存储图书对象/字典,示例结构:{"isbn": "978-xxxx-xxxx", "title": "图书名称", ...}

    def remove(self, target_isbn):
        # 过滤保留所有ISBN不等于目标值的图书,实现精准删除
        self.books = [book for book in self.books if book["isbn"] != target_isbn]

方案2:仅删除第一个匹配ISBN的图书

如果业务需求是只删除首次出现的目标图书,可通过倒序遍历索引避免移位问题:

class BookFunction:
    def __init__(self):
        self.books = []

    def remove(self, target_isbn):
        # 倒序遍历索引,删除元素时不会影响未遍历的元素位置
        for idx in range(len(self.books)-1, -1, -1):
            if self.books[idx]["isbn"] == target_isbn:
                del self.books[idx]
                break  # 删除第一个匹配项后终止循环,如需删除所有则移除该行

核心修正点

  • 避免遍历中修改原列表:正向遍历直接删除元素会破坏迭代器的遍历顺序,导致部分元素未被检查
  • 精准ISBN匹配:严格对比图书的ISBN字段,确保只有目标图书被删除
  • 灵活适配需求:两种方案分别对应批量删除和单条删除场景,可根据业务需求选择

内容的提问来源于stack exchange,提问作者pirijatharsan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 21:57:12