如何在列表

时间:2018-06-07 14:17:57

标签: python

我正在为我的公司将程序从C翻译成python。我是Python的新手,我不知道如何定义一个带有对象列表的类,因为没有声明。

这里我希望类Population1有一个对象染色体列表。但是翻译不明白。我在互联网上搜索,但我还没有找到解决方案。

我遇到的错误是AttributeError: 'list' object has no attribute 'fitness'

感谢您的帮助。

class Problem1:
    def __init__(self,N_variables,minVal,maxVal):
        self.N_variables =N_variables
        self.minVal=minVal
        self.maxVal=maxVal
    def objFunct(self):
        return 0

class Population1:
    def __init__(self):
        ch=Chromosomes()
        self.Chromo=[]
        self.Chromo.append(ch)


class Chromosomes:
    def __init__(self):
        self.Gene=[]
        self.fitness=0

result = normalized_fitness.append((population.Chromo[i].fitness) / sum(population.Chromo.fitness))

1 个答案:

答案 0 :(得分:0)

您正在尝试此操作normalized_fitness.append((population.Chromo[i].fitness) / sum(population.Chromo.fitness))

在分子中,您要求列表中的对象上的适合度字段。在分母中,您要求列表中的健身字段

如果你想总结一下,你需要一份适合度列表。

all_fitness = [chromo.fitness for chromo in population.Chromo]
this_fitness = population.Chromo[i].fitness
normalized_fitness.append(this_fitness / sum(all_fitness))

这对你有用。每次不计算总和作为练习。