从对象列表中创建属性列表

2024-04-23 19:28:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试做一个遗传算法,为了收集适应度函数的值,我做了一个类对,这样我就可以用lambda函数排序。课程很简单,就是这样:

class Par(object):
def __init__(self,cromosoma,valoracion):
    self.cromosoma=cromosoma
    self.valoracion=valoracion

def __str__(self):
    return ("Cromosoma: {0}\nTiene valoracion: {1}".format(self.cromosoma,self.valoracion))

def __repr__(self):
    return ("Cromosoma: {0}\nTiene valoracion: {1}".format(self.cromosoma,self.valoracion))

所以在我整理了染色体列表之后:

poblacionOrdenada=sorted(evaluacion, key=lambda par: par.valoracion, reverse=False)

我想选择50%的最佳,但我想要的功能只是染色体,而不是对对象。那么我怎么才能得到一个没有for的染色体列表呢?也许用另一个lambda函数?你知道吗

我不想使用for,因为我必须在不同的函数中选择几个时间。你知道吗


Tags: lambda函数selfformat列表forreturndef
2条回答

生成一个只包含cromosoma属性和列表理解的列表:

[par.cromosoma for par in poblacionOrdenada]

一旦你有了这个列表,你就可以用它进行各种不同的函数调用。你知道吗

要从排序列表中选择前50%菌株的染色体:

answer = [strain.cromosoma for strain in poblacionOrdenada[:len(poblacionOrdenada)/2]]

编辑:(因为我缺乏领域知识)

如果最好的50%菌株在列表的末尾,则用[:len(poblacionOrdenada)/2]切换[len(poblacionOrdenada)/2:]。你知道吗

相关问题 更多 >