class Employee: def __init__(self, eid, did, name, money): self.eid = eid # 员工编号 self.did = did # 部门编号 self.name = name self.money = money list_employees = [ Employee(1001, 9002, "师父", 60000), Employee(1002, 9001, "孙悟空", 50000), Employee(1003, 9002, "猪八戒", 20000), Employee(1004, 9001, "沙僧", 30000), Employee(1005, 9001, "小白龙", 15000), ] def delete_single(): for item in list_employees: if item.eid==1005: del item delete_single() for item in list_employees: print(item.__dict__)
时间: 2024-03-31 16:33:57 浏览: 13
这段代码的作用是删除 list_employees 列表中员工编号为 1005 的员工信息,并输出剩余员工的信息。
代码的实现思路是,定义一个函数 delete_single(),在其中遍历 list_employees 列表,如果找到员工编号为 1005 的员工,就使用 del item 删除该员工信息。接着在主程序中调用 delete_single() 函数,然后遍历 list_employees 列表输出剩余员工信息。
但是,这段代码存在一个问题,就是在删除 list_employees 列表中的元素时,会改变列表的长度和索引,可能会导致删除不完全或删除错误的元素。因此,正确的删除方法是先将要删除的元素加入到一个新的列表中,然后再遍历这个新列表删除元素。
以下是修改后的代码:
```python
class Employee:
def __init__(self, eid, did, name, money):
self.eid = eid # 员工编号
self.did = did # 部门编号
self.name = name
self.money = money
list_employees = [
Employee(1001, 9002, "师父", 60000),
Employee(1002, 9001, "孙悟空", 50000),
Employee(1003, 9002, "猪八戒", 20000),
Employee(1004, 9001, "沙僧", 30000),
Employee(1005, 9001, "小白龙", 15000),
]
def delete_single():
to_delete = []
for item in list_employees:
if item.eid == 1005:
to_delete.append(item)
for item in to_delete:
list_employees.remove(item)
delete_single()
for item in list_employees:
print(item.__dict__)
```
输出结果为:
```
{'eid': 1001, 'did': 9002, 'name': '师父', 'money': 60000}
{'eid': 1002, 'did': 9001, 'name': '孙悟空', 'money': 50000}
{'eid': 1003, 'did': 9002, 'name': '猪八戒', 'money': 20000}
{'eid': 1004, 'did': 9001, 'name': '沙僧', 'money': 30000}
```