我是Python面向对象编程的新手,遇到了麻烦。我试图遍历一个类的list属性,但是我的循环会打印整个列表,而不是每个项目。
班级:
class Population:
def __init__(self, population):
self.population = population
self.popList = []
pool = ThreadPool(mp.cpu_count()-1)
self.popList.append([pool.apply(Creature.P, args=(
self, 0, random.randint(1, 2))) for creature in range(population)])
pool.close()
pool.join()
if __name__ == "__main__":
import doctest
doctest.testmod()
首次调用(可准确创建填充和popList):
# RANDOM FIRST GENERATION INITIALIZATION
pop = Population(population)
然后称呼它:
for x in pop.popList:
print(x)
在这种情况下,x
是整个popList
而不是单个项目。
答案 0 :(得分:2)
此行:
self.popList.append([pool.apply(Creature.P, args=(self, 0, random.randint(1, 2)))
for creature in range(population)])
应该是这样的:
self.popList = [pool.apply(Creature.P, args=(self, 0, random.randint(1, 2)))
for creature in range(population)]
您要在popList
上附加一个列表,因此要使其成为一个列表,其中只有一个列表,并且内部列表包含所有人口。
因此,原始代码中的popList
最终看起来像这样:[[Creature, Creature, Creature]]
当您真正想要拥有生物时,只需将其列出:[Creature, Creature, Creature]