Python删除类对象报错:TypeError: 'employee'对象无法解析为整数
Python删除类对象时TypeError的解决方法
错误原因
你碰到的TypeError: 'employee' object cannot be interpreted as an integer,是因为list.pop()方法必须传入整数类型的索引值,但你代码里直接把employee对象i传给了pop(),Python无法将对象转换为整数索引,所以触发错误。
正确解决方案
方法1:通过enumerate获取索引后删除
遍历列表时同时拿到索引和对象,找到匹配项后用索引调用pop():
name = input("Enter name you want to delete : ") for idx, emp in enumerate(lst): if name in emp.name: lst.pop(idx) print("Employee deleted!") break # 只删除第一个匹配项就退出循环,避免遍历混乱
注意:如果要删除所有匹配的员工,去掉
break即可,但正序遍历中删除元素可能导致后续索引错位,建议用方法2。
方法2:倒序遍历索引删除
倒序遍历列表索引,删除元素不会影响未遍历的索引位置,适合删除多个匹配项:
name = input("Enter name you want to delete : ") for idx in range(len(lst)-1, -1, -1): if name in lst[idx].name: lst.pop(idx) print("Employee deleted!")
方法3:生成新列表过滤(更安全简洁)
直接生成一个不包含目标对象的新列表,避免修改原列表引发的遍历问题:
name = input("Enter name you want to delete : ") original_len = len(lst) lst = [emp for emp in lst if name not in emp.name] if len(lst) < original_len: print("Employee deleted!")
这种方式代码更简洁,也不会出现迭代器混乱的问题,是推荐的写法。
内容的提问来源于stack exchange,提问作者Rishi Vyas
相关产品推荐
相关产品推荐

