在Python中交换2个数组元素的位置

时间:2011-12-31 02:14:02

标签: 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

这应该可行,但是,这并不好。更好的方法是像 random.shuffle 这样的例行程序,但不是混合所有东西,只会混合n个元素。你有什么想法吗?

3 个答案:

答案 0 :(得分:6)

>>> chromo[gene1Pos], chromo[gene2Pos] = chromo[gene2Pos], chromo[gene1Pos]

所以你只需要确保你拥有正确的genXPos

答案 1 :(得分:1)

只需将Python中的变量交换的常规机制与切片/切片分配结合起来。

>>> a = [1, 2, 3, 4, 5]
>>> a[2:3], a[4:5] = a[4:5], a[2:3]
>>> a
[1, 2, 5, 4, 3]

答案 2 :(得分:-1)

你正在做的事情没有错。您可以通过删除其中一个临时变量来简化它。要交换ab,您只需要:

tmp = a
a = b
b = tmp