遇到一个问题,实在没什么思路,请大家指点一下吧~

遇到一个问题,实在没什么思路,请大家指点一下吧~

是这样,想写一个类似遗传算法的code,前面三个函数bit_crossover,chromosome_crossover和mutate是交叉和变异,为第四个函数mate所调用。而mate的对象是50个个体,将其命名为a1,a2,...,a50,50个个体其中随机每两个进行交叉和变异(其中每个个体都是一个二进制的矩阵)。为了方便起见,我将这50个个体放到了一个list里面,但是进行了交叉和变异以后每个个体的值就返回不出来了,我想请教一下,我如何把经过交叉和变异的个体值重新赋给a1,a2,...,a50,因为后面还要用到~~
想了很久,觉得可以用dictionary,但是还是想发上来请教一下大家,有没有更好的方法,可能有些繁琐,谢谢~
def bit_crossover(a,b):
        crossover_point = random.randint(0,19)
        if random.random() <= 0.7:
                c = a[:crossover_point]+b[crossover_point:]
                d = b[:crossover_point]+a[crossover_point:]
                a = c
                b = d
        return a, b

def chromosome_crossover(a,b):
        for i in range(len(a)):
                a[i], b[i] = bit_crossover(a[i],b[i])
def mutate(a):
        for i in range(len(a)):
            for j in range(len(a[i])):
                if random.random() <= 0.001:
                    if a[i][j] == 1:
                        a[i][j] = 0
                    else:
                        a[i][j] = 1
        return a

def mate(A):
        for i in range(len(A)/2):
                B = random.sample(A,2)
                for j in range(2):
                        A.__delitem__(A.index(B[j]))
                chromosome_crossover(B[0],B[1])
                mutate(B[0])
                mutate(B[1])
赋参数值时, 用mutate(b[0][:])

不知道理解得对不对
thanks
我的意思是,我是为了方便操作才把a1,a2,......,a50放到一个list里面,但是这个在对这个list进行操作并不会改变a1,a2,.....,a50的值,而我后面是还要再用到这些值的,现在比较困惑~
如果你想a值改变, 重新赋值回去不就可以了吗? 比如:

a0, a1=a

实际上, 连赋值都不必, 你用单个值的时候, 直接从列表取就可以
我建议创建一个类,以上的函数作为类的方法,列表的值不就可以修改了吗,而且更加自然.