Is there a better way of doing this?

Chris Rebert clp2 at rebertia.com
Fri Mar 6 06:59:56 EST 2009


On Fri, Mar 6, 2009 at 3:52 AM, mattia <gervaz at gmail.com> wrote:
> Il Fri, 06 Mar 2009 03:43:22 -0800, Chris Rebert ha scritto:
>
>> On Fri, Mar 6, 2009 at 3:07 AM, mattia <gervaz at gmail.com> wrote:
>>> Great, the for statement has not to deal with fap anymore, but with
>>> another sequence, like this:
>>>
>>> def get_roulette_wheel(weight_value_pairs):
>>>    roulette_wheel = []
>>>    for weight, value in weight_value_pairs:
>>>        roulette_wheel += [value]*weight
>>>    return roulette_wheel
>>>
>>> def selection(fitness, population):
>>>    ...
>>>    rw = get_roulette_wheel(fap)
>>>    for i in range(pop_len-2):
>>>        selected_population += [choice(rw)]
>>>    return selected_population
>>>
>>> I think that using [choice(rw)]*len(fap) will produce the same sequence
>>> repeted len(fap) times...
>>
>> Revision to this new code:
>>
>> def get_roulette_wheel(weight_value_pairs):
>>    return [[value]*weight for weight, value in weight_value_pairs]
>>
>> def selection(fitness, population):
>>    ...
>>    rw = get_roulette_wheel(fap)
>>    for i in range(len(fap)):
>>        selected_population.append(choice(rw))
>>    return selected_population
>>
>> Cheers,
>> Chris
>
> Great, append is equivalent to += right? or more efficient?

Yes. .append(item) is equivalent to += [item] and is more efficient.

Cheers,
Chris

-- 
I have a blog:
http://blog.rebertia.com



More information about the Python-list mailing list