类列表属性的For循环迭代

2024-09-28 22:21:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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,而不是单个项。你知道吗


Tags: inself列表for属性popdoctestlist
1条回答
网友
1楼 · 发布于 2024-09-28 22:21:39

这条线:

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]

相关问题 更多 >