Python中如何将数据列表的值逐个添加到对象列表的对应实例中
错误原因
- 类初始化方法内
self.data=0.0缩进错误,会先触发语法报错 - 循环赋值时误用
Person.data,这是操作Person类的公共属性,不是每个实例的独立属性,赋值后所有实例自身的data还是初始值0.0,只有类属性被反复覆盖为最后一个数据
修正代码
你可以选择保留原有变量定义的写法,也可以简化列表生成逻辑,核心修正赋值逻辑即可:
data = [1,2,3,4,5,5,5,6,6,6.5] class Person(object): def __init__(self,name): self.name = name self.data = 0.0 # 修正缩进错误 # 简化实例创建逻辑,不需要单独定义10个变量 list_of_people = [ Person("Aiden"), Person("AidenTwo"), Person("AidenThree"), Person("AidenFour"), Person("AidenFive"), Person("AidenSix"), Person("AidenSeven"), Person("AidenEight"), Person("AidenNine"), Person("AidenTen") ] # 正确赋值写法:用zip配对两个等长列表,逐个给实例属性赋值 for person, assign_data in zip(list_of_people, data): person.data = assign_data # 如果你习惯用索引遍历的写法,也可以改成如下形式 # for idx in range(len(list_of_people)): # list_of_people[idx].data = data[idx]
结果验证
执行完赋值后可以用如下代码确认分配正确:
for p in list_of_people: print(p.name, p.data)
内容的提问来源于stack exchange,提问作者Shades25
相关产品推荐
相关产品推荐

