リストと別の参照リストの間で共通の要素を最初の要素と交換して、リストを変更してみました。実装は次のとおりです。
>>> L = [1,2,3,4,5,6,7,8,9]
>>> A = [3]
>>> L[0], L[L.index(A[0])] = L[L.index(A[0])], L[0] #want to swap 3 with 1
>>> L
[1,2,3,4,5,6,7,8,9,] #List L was not mutated
私が予想したように、リストは変更されませんでした。しかし、以下に示すように実装を変更すると、機能しました。
>>> L = [1,2,3,4,5,6,7,8,9]
>>> A = [3]
>>> i = L.index(A[0])
>>> L[0], L[i] = L[i], L[0]
>>> L
[3,2,1,4,5,6,7,8,9,] #Now list mutated as desired even though L[i] and L[L.index(A[0])] evaluate to same value.
私の質問は、なぜ最初の割り当てでリストを変更できなかったのかということです。私はそれについて考えましたが、私の脳はそれを説明していません。