这可以用列表理解还是lambda来完成?

时间:2017-10-11 16:28:05

标签: python

我现在已经坚持了一段时间,并且无法弄清楚如何将此功能转换为单行。我知道它也可以通过标准for循环完成,但我不想这样做。

def set_num_children(individs):
    avg_fitness = calc_avg_fitness(individs)
    def calculation(individ):
        individ[2] = round(individ[1]/avg_fitness)
        return individ

    return map(calculation, individs) 

2 个答案:

答案 0 :(得分:1)

尽可能接近:

avg_fitness = calc_avg_fitness(individs)
[[x[0], x[1], round(x[1] / avg_fitness)] for x in individs]

即使我们可以calc_avg_fitness的调用进行内联,我们也不应该,多次计算它是没有意义的...这是低效的:

[[x[0], x[1], round(x[1] / calc_avg_fitness(individs))] for x in individs]

无论哪种方式,我们都会返回一个“个体”列表,这些列表是三元素列表,第三个列表是所需的计算。

答案 1 :(得分:0)

当然,A将是字面翻译。也许有点清理它。