Эта строка:
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]