For Loop迭代“类”列表属性

时间:2019-04-26 10:46:40

标签: python oop for-loop

我是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而不是单个项目。

1 个答案:

答案 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]