2つの要素の位置を交換する方法はありますか?Pythonの2つの配列要素の交換位置
私はいくつかのコードを思いついたが、それは非常に醜いとパフォーマンスが少し悪いようになります。
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
これは動作するはずですが、まあ、それは素晴らしいではありません。より良い方法は、random.shuffleのようなルーチンですが、すべてを混合するのではなく、n個の要素だけを混合することになります。あなたは何か考えていますか?
これが何をコンパイルし、なぜそれが最速であるのかについては、http://stackoverflow.com/questions/4554130/fastest-way-to-swap-elements-in-python-listを参照してください。 – dkamins
ありがとうございます。これは少しきれいで、dkaminsが指摘しているように、より速くです。 – jbssm