Is there a better way of doing this?

mattia gervaz at gmail.com
Fri Mar 6 05:19:22 EST 2009


Hi, I'm new to python, and as the title says, can I improve this snippet 
(readability, speed, tricks):

def get_fitness_and_population(fitness, population):
    return [(fitness(x), x) for x in population]

def selection(fitness, population):
    '''
    Select the parent chromosomes from a population according to their
    fitness (the better fitness, the bigger chance to be selected)
    '''
    selected_population = []
    fap = get_fitness_and_population(fitness, population)
    pop_len = len(population)
    # elitism (it prevents a loss of the best found solution)
    # take the only 2 best solutions
    elite_population = sorted(fap)
    selected_population += [elite_population[pop_len-1][1]] + 
[elite_population[pop_len-2][1]]
    # go on with the rest of the elements
    for i in range(pop_len-2):
        # do something



More information about the Python-list mailing list