python-3.x - 如何按值从列表中删除对象
问题描述
我的问题是我创建了一个包含姓名和编号的学生列表。现在的任务是按学生的号码删除学生。我的问题是我的代码不起作用。
另一个问题是它总是显示内存地址而不是对象的值。
提前致谢
班级学生:
def __init__(self, name, number):
self.name = name
self.number = number
from .student import Student 课程:
def __init__(self, name, code, credit, student_limit):
self.name = name
self.code = code
self.credit = credit
self.student_limit = student_limit
students = []
def add_student(self, new_student):
self.student = new_student
self.students.append(new_student)
print("Student added" +str(self.students))
def remove_student_by_number(self, student_number):
self.student_number = student_number
if student_number in self.students: self.students.remove(student_number)
print("Student removed" + str(self.students))
从 .course 导入课程类部门:
def __init__(self, name, code):
self.name = name
self.code = code
courses = []
def add_course(self, course):
self.course = course
self.courses.append(course)
print("Course added" +str(self.courses))
从 python 导入 * def main():
alice = Student("Alice", 1336)
bob = Student("Bob", 1337)
math_dept = Department("Mathematics and Applied Mathematics", "MAM")
math_course = Course("Mathematics 1000", "MAM1000W", 1, 10)
math_dept.add_course(math_course)
math_course.add_student(bob)
math_course.add_student(alice)
math_course.remove_student_by_number(alice.number)
if __name__ == "__main__":
main()
解决方案
self.students
是一个实例列表,因此如果未实现Student
该方法,它将打印实例的内存地址(例如,请参见此处)。您应该尝试像或明确地打印每个属性。__str__
student.name
student.number
无论如何,您正在尝试student_number
在列表中查找,Student
因此它当然永远不会运行删除行。而是使用if student_number in [student.number for student in self.students]
which 正在查找学生的号码列表,而不是学生列表本身。但是,在这种情况下,您还希望删除student_number
作为输入的学生,因此您可能需要使用如下循环:
def remove_student_by_number(self, student_number):
for student in self.students:
if student.number == student_number:
print("Student removed" + str(student.name))
self.students.remove(student)
break
推荐阅读
- python-3.x - 在python中定义矩阵时放置常量
- xml - 如何以结构化的方式将表格结构转换为纯文本
- c++ - 使用 async cpp boost socket 时减少响应时间
- mongodb - 使用 MongoDb 聚合管道根据特定类型查询前 10 项
- python - 如何有效地读取非常大的 gzip 压缩日志文件的最后一行?
- sql - 在 T-SQL 中为表创建或更改
- sql - 如何在 Presto SQL 中应用 sum() 查询并面对函数 sum 的意外参数 (varchar)
- python - 查找列表中包含重复值的每个元素的索引
- python - “符号”和“标记”在 plotly-express 的 line 函数中似乎不再起作用
- php - Google drive API - 获取已创建权限的用户(共享文件)