首页 > 解决方案 > 对对象列表进行排序并按属性(适应度)值重新索引

问题描述

在遗传算法中,我有一个indis由类型对象表示的候选解决方案列表(总体)indi。为了直接进行选择,我想按适应度值对这些个体进行排序。排序后,他们应该有一个新的索引来代表他们的适应度。

indi.getFitness()  # Returns the fitness.
indi.setId(index)  # sets the index

我最初的方法是不够的,因为它不包括排序:

idx=0
for indi in self.indis: 
    indi.setId(idx)
    idx += 1

问题是:如何按适应度排序并重新索引以使最佳解决方案索引为 0?

标签: pythonlistsortingobject

解决方案


不,不要使用对副作用的理解

但是,您可以使用以下方法使其更清洁enumerate

for idx, indi in enumerate(self.indis):
    indi.setId(idx)

推荐阅读