【发布时间】:2021-01-25 11:48:23
【问题描述】:
在遗传算法中,我有一个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?
【问题讨论】:
-
不,不能。
setId改变它的调用对象;理解旨在返回值的集合。为副作用编写一个专门的理解是uuuuglyy。也许您想要map方法——请参阅map上的任何教程。 -
在我发布答案后,您大大改变了问题。这并不酷,虽然我并没有太在意。如果你想改变范围,你应该问一个新问题,虽然它已经被问过了:How to sort a list of objects based on an attribute of the objects?
-
@wjandera,我很抱歉 - 他们阻止我的原因是我的问题不清楚,所以我尽力将问题改写得更具体 - 不过你的贡献很有价值谢谢!
标签: python list sorting object