如何从列表创建对象?
假设我有两个列表,第一个名为 studentName
studentName = ["Jack","Simon","John","Matthew"]
第二个被命名为 studentGrade
studentGrade = [100,88,74,94]
我还有一个名为“学生”的班级
class Students():
def __init__(self,name,grade):
self.name = name
self.grade = grade
如何在不使用如下常用方法的情况下创建对象:
Jack = Students("Jack",100)
我想做同样的事情,但不必输入 4 行。相反,我想在列表中使用循环。这可能吗?
回答
您可以使用zip一次迭代两个列表来做到这一点;另外我建议你用Student单数来命名你的班级,因为它只代表一个人,而不是多个
studentName = ["Jack", "Simon", "John", "Matthew"]
studentGrade = [100, 88, 74, 94]
students = [Student(n, g) for n, g in zip(studentName, studentGrade)]
添加一个__repr__就可以看到结果了
class Students():
def __init__(self, name, grade):
self.name = name
self.grade = grade
def __repr__(self):
return f"{self.name}:{self.grade}"
if __name__ == '__main__':
studentName = ["Jack", "Simon", "John", "Matthew"]
studentGrade = [100, 88, 74, 94]
students = [Students(n, g) for n, g in zip(studentName, studentGrade)]
print(students) # [Jack:100, Simon:88, John:74, Matthew:94]