我们的程序在循环中创建多个对象时遇到问题。我们正在阅读周期表中所有元素的列表以及文本文件中各自的原子权重。我们想为每个原子创建一个单独的对象,原子权重和原子名称作为属性。我们最容易做到这一点?
到目前为止,我们提出的是:我们创建了一个包含所有原子名称的列表,以及一个具有权重的列表。然后我们尝试创建一个循环来创建多个对象,而不必逐个创建它们,所以我们尝试了这个:
for i in range(len(name_list)):
name_list[i] = Atom(atom_name=name_list[i], atom_weight=weight_list[i])
(我们的班级名为Atom
,其属性为atom_name
和atom_weight
)
答案 0 :(得分:1)
我认为你想要的是:
name_list = [Atom(*data) for data in zip(name_list, weight_list)]
如果不熟悉此语法,请参阅Python for-in loop preceded by a variable和What does ** (double star) and * (star) do for parameters?如果您的班级只接受关键字参数,则可以切换到:
name_list = [Atom(atom_name=name, atom_weight=weight)
for name, weight in zip(name_list, weight_list)]
有关zip
的详细信息,请参阅the docs。