簡體   English   中英

從對象列表中創建屬性列表

[英]Make a list of attribute from a list of objects

我正在嘗試制定遺傳算法,並收集適應度函數的值,所以我制作了一個類對,以便可以使用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,因為我必須在不同的功能中選擇幾次。

產生僅具有列表理解的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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM