我尝试通过用第一个元素交换列表和另一个引用列表之间的公共元素来改变列表。实现如下图所示:
>>> 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.
我的问题是,为什么第一个任务不能改变列表?我想到了,但我的大脑无法解释。