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

如何结合列表推导与if-else实现司机记录删除的状态提示?

问题分析与解决方案

原代码的核心错误在于判断条件if driver_name in driver_details:driver_details是嵌套列表,每个元素都是包含司机信息的子列表,直接判断字符串是否在顶层列表里永远不会成立,所以才会一直提示"Record Not found"。

要实现正确功能,需要先确认是否存在目标司机记录,再执行删除并给出对应提示,结合列表推导的实现方式如下:

修正后的完整代码

driver_details = [["Ken Block","55","Hoonigan","Mustang"], ["Ken Miles","48","Ford","Ford GT"]]

def delete_driver():
    """This function is used to delete driver details
    by entering the driver name"""
    global driver_details
    driver_name = input("Enter driver name: ")
    
    # 先检查目标司机是否存在
    driver_exists = any(driver[0] == driver_name for driver in driver_details)
    
    if driver_exists:
        # 用列表推导过滤掉目标司机的记录
        driver_details = [driver for driver in driver_details if driver[0] != driver_name]
        print("Record Deleted")
    else:
        print("Record Not found")
    
    print(driver_details)
    options()  # 假设options()是你定义的其他功能菜单函数

关键说明

  • 使用any(driver[0] == driver_name for driver in driver_details)遍历嵌套列表,检查是否存在姓名匹配的司机记录,这是判断的核心逻辑。
  • 列表推导[driver for driver in driver_details if driver[0] != driver_name]会生成一个新列表,排除掉姓名匹配的记录,实现删除效果。
  • 先判断再执行删除,能准确对应操作结果给出提示,解决了之前要么判断错误要么提示错误的问题。

内容的提问来源于stack exchange,提问作者Jr.Macking

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:10:39