为何执行指定代码时出现ValueError: list.remove(x): x not in list错误?明明85存在于gradebook列表中
解决
ValueError: list.remove(x): x not in list的问题——明明数值存在却报错 嗨,我来帮你理清这个问题!你遇到的困惑很常见,核心是你搞错了gradebook列表里的元素类型。
看一下你的代码:
grades = [98, 97, 85, 88] gradebook = [["physics", 98], ["calculus", 97], ["poetry", 85], ["history", 88]] gradebook.remove(85)
gradebook里的每一个元素都是子列表(比如["poetry", 85]),而不是单独的数字。当你调用gradebook.remove(85)时,Python会在gradebook的顶层元素里寻找完全等于85的项——但顶层元素全是列表,根本没有单独的85,所以才会抛出这个错误,哪怕子列表里包含85也没用。
如果你的目标是移除包含85的那个子列表,有两种常见的解决方法:
- 方法一:遍历找到目标子列表再移除
你可以先遍历gradebook,找到包含85的子列表后再调用remove:for item in gradebook: if 85 in item: gradebook.remove(item) break # 找到后立即停止遍历,避免后续不必要的操作 - 方法二:直接传入完整的子列表
如果你明确知道目标子列表的内容,也可以直接传入完整的子列表进行移除:gradebook.remove(["poetry", 85])
这样就能正确移除你想要的项啦~
内容的提问来源于stack exchange,提问作者Vlake




