python - 按成员在类中的属性排序

标签 python genetic-algorithm

我正在研究遗传算法问题。假设我有一个 Population() 类,它有一个 Individual() 列表。每个人都有一个与之相关的分数。根据他们在人群中的分数对这些人进行排序/排名的好方法是什么?例如:

class Individual(object):
    rr = 100
    def __init__(self):
        self.score = random.randrange(self.rr)

class Population(object):
    def __init__(self, size):
        self.size = size
        self.population = [Individual() for _ in xrange(self.size)]

pop = Population(5)
for i in xrange(pop.size):
    print pop.population[i].score

是否有一种 Pythonic 的方法可以根据他们的分数对这些人进行排序?谢谢!

最佳答案

当然,使用 .sort() 方法的 key 参数:

from operator import attrgetter
pop.population.sort(key=attrgetter('score'))

使用 operator.attrgetter()使这更容易一些,但不是必需的。

参见 Sorting Howto在 Python wiki 上获取更多提示和技巧。

关于python - 按成员在类中的属性排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15167684/

相关文章:

hadoop - 集群遗传编程/算法

optimization - 用遗传算法用大小不等的圆填充矩形

python - OHLC 采样正在创建错误的时间戳蜡烛

artificial-intelligence - 如何定义健身功能?

Python多处理队列获取和放置

python - 迭代非常大的表并更新行的最有效方法是什么?

artificial-intelligence - 遗传交叉函数

algorithm - 遗传/进化算法 - Painter

python - 在 python 中提取 OpenCV 的 Canny 边缘检测的有序 xy 坐标

python - django-reversion 和 django-reversion-compare 与用户模型