1

我正在研究遗传算法问题。假设我有一个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 方法可以按分数对这些人进行排序?谢谢!

4

3 回答 3

3

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

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

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

有关更多提示和技巧,请参阅 Python wiki 上的Sorting Howto 。

于 2013-03-01T22:11:53.640 回答
1
sorted_pop = sorted(pop.population, lambda x, y: cmp(x.score, y.score))
于 2013-03-01T22:13:29.267 回答
0

不导入任何库:

pop.population.sort(key=lambda x: x.score)
于 2013-03-10T21:35:06.517 回答