假设我有以下内容:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
我必须将其更改为:
['a', 'b', 'f', 'c', 'd', 'e', 'g']
最有效的方法是什么?
更新:我实际上需要移动元素,而不是交换。请注意对我上面示例的更改。
假设我有以下内容:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
我必须将其更改为:
['a', 'b', 'f', 'c', 'd', 'e', 'g']
最有效的方法是什么?
更新:我实际上需要移动元素,而不是交换。请注意对我上面示例的更改。
我不知道“高效”是指“以清晰/可读的方式”,还是指性能。如果是前者并且您想就地进行替换,则可以使用方便[]
的列表运算符:
def arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
arr[2, 5] = arr[5, 2]
assert arr == ['a', 'b', 'f', 'd', 'e', 'c', 'g']
更新:问题不是交换两个元素,而是将元素移动到另一个位置。要就地执行此操作,您可以使用一些 Java ArrayList方法,这些方法允许您从给定位置添加和删除元素。我认为这是非常可读的:
def arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
arr.add(2, arr.remove(5))
assert arr == ['a', 'b', 'f', 'c', 'd', 'e', 'g']