2 回答
TA贡献1824条经验 获得超6个赞
在书中的代码中,每套西装都有每一个价值——它是西装和价值的笛卡尔积。在您的代码中,您只需要从学生到成绩的一对一映射。这通常使用 zip() 完成。您可以使用,这将为您提供相应的对。然后,您可以获取以下列表:zip(self.names, self.grades)Students
self._stud=[Student(n, g) for n, g in zip(self.names, self.grades)]
您也可以将班级设置为不依赖于全局变量,并使用如下内容获取学生和成绩列表:
import collections
Student = collections.namedtuple('Student',['name','grade'])
studentname = ["John","Jay","Joe","Joseph"]
grades = [89,98,87,91]
class Grades:
def __init__(self, names, grades):
self._stud = [Student(n, g) for n, g in zip(names, grades)]
def __len__(self):
return len(self._stud)
def __getitem__(self,position):
return self._stud[position]
g = Grades(studentname, grades)
g._stud将是:
[
Student(name='John', grade=89),
Student(name='Jay', grade=98),
Student(name='Joe', grade=87),
Student(name='Joseph', grade=91)
]
TA贡献1802条经验 获得超5个赞
这与命名元组没有任何关系。使用卡,您可以使用 和 的每个元素创建一个新实例。Cardrankssuits
对于 ,您希望使用压缩结果中的每个元素并一起创建一个新实例。gradeStudentnamesgrades
def __init__(self): self._stud=[Student(name,grade) for name, grade in zip(self.names, self.grades)]
添加回答
举报
