2011-12-05 12 views
3

リストやタプルの要素を入れ替える方法を知る必要がある非常に特殊な問題があります。 ボード状態と呼ばれるリストが1つあり、スワップが必要な要素が分かります。どのように私はそれらを交換するのですか? 2次元配列を持つjavaでは、私は簡単に標準のスワップテクニックを行うことができますが、ここではタプルの割り当てはできません。ここでタプルの要素を入れ替える方法は?

は私のコードです:

board_state = [(0, 1, 2), (3, 4, 5), (6, 7, 8)] 

new = [1, 1] # [row, column] The '4' element here needs to be swapped with original 
original = [2, 1] # [row, column] The '7' element here needs to be swapped with new 

結果は次のようになります。

board_state = [(0, 1, 2), (3, 7, 5), (6, 4, 8)] 

は、私はどのように交換するのですか?

答えて

6

Tuples, like strings, are immutable: it is not possible to assign to the individual items of a tuple

Listsは変更可能ですので、あなたのboard_statelistlistの秒に変換します。

>>> board_state = [[0, 1, 2], [3, 4, 5], [6, 7, 8]] 

そしてswapping two elements in a listのための標準的なPythonのイディオムを使用します。

>>> board_state[1][1], board_state[2][1] = board_state[2][1], board_state[1][1] 
>>> board_state 
[[0, 1, 2], [3, 7, 5], [6, 4, 8]] 
関連する問題