我有一个如下所示的列表:
class Ind(object):
def __init__(self,ID,mate):
self.ID=ID
self.mate=mate
population=[Ind(8,None), Ind(1,2), Ind(20,3), Ind(2,1), Ind(12,None), Ind(3,20), Ind(10,11), Ind(11,10)]
您可以将这个列表
population
看作是一个人口群体,其中所有人都有一个 ID
。其中一些人有一个配偶(即存在于相同的人口群体或相同的列表中的个体)。mate
值实际上就是配偶的 ID
!因此,如果有一个实例 Ind
,其属性 ID
等于 12,mate
等于 34,则必然存在一个 ID 等于 34,且配偶为 12 的个体在该列表中。没有配偶的个体在 mate
属性中写入了 None
。您明白了吗?我想对这个列表进行排序,使第一个个体与最后一个个体配对,第二个个体与倒数第二个个体配对,以此类推。具有
mate
属性等于 None
的个体应位于列表的中间。有很多可能符合我的要求的输出结果。以下是以上列表的一个示例:
population=[Ind(1,2), Ind(20,3), Ind(10,11), Ind(8,None), Ind(12,None), Ind(11,10), Ind(3,20), Ind(2,1)]
Ind(2,3)
(2与3结为配偶)和Ind(2,1)
(2与1结为配偶)。这是打字错误吗?还是在你的种群中交配真的是一对多的关系? - Miklos Aubert