jbs*_*ssm 0 python arrays random shuffle
有没有简单的方法来交换数组中2个元素的位置 - 或者更好的是,n个元素?
我想出了一些代码,但它看起来很丑陋,性能应该有点差:
chromo = [[1,2], [3,4], [5,6]]
gene1Pos = random.randrange(0, len(chromo)-1, 1)
gene2Pos = random.randrange(0, len(chromo)-1, 1)
tmpGene1 = chromo[gene1Pos]
tmpGene2 = chromo[gene2Pos]
chromo[gene1Pos] = tmpGene2
chromo[gene2Pos] = tmpGene1
Run Code Online (Sandbox Code Playgroud)
这应该有用,但是,这并不好.更好的方法是像random.shuffle这样的例程,但不是混合所有东西,只会混合n个元素.你有什么主意吗?
尝试
>>> chromo[gene1Pos], chromo[gene2Pos] = chromo[gene2Pos], chromo[gene1Pos]
Run Code Online (Sandbox Code Playgroud)
因此,您只需要确保拥有正确的genXPos