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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:45:44