次のようなものがあるとします。
['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']
更新:問題は2つの要素を交換することではなく、要素を別の位置に移動することです。その場でそれを行うには、特定の位置から要素を追加および削除できる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']