-3
>>> L = [1, 2, 3, 4]
>>> L[0:2] = [8, 9]
>>> L
[8, 9, 3, 4]
>>> L[0:2].reverse()
>>> L
[8, 9, 3, 4]
您能否解釋爲什麼L[0:2].reverse()
不會更改L
列表?無法扭轉子列表
>>> L = [1, 2, 3, 4]
>>> L[0:2] = [8, 9]
>>> L
[8, 9, 3, 4]
>>> L[0:2].reverse()
>>> L
[8, 9, 3, 4]
您能否解釋爲什麼L[0:2].reverse()
不會更改L
列表?無法扭轉子列表
L[0:2]
創建列表的新副本,然後L[0:2].reverse()
反轉該副本。使用賦值到切片和只讀切片(調用一個方法,即使是對象變異的方法不會將其轉換爲賦值)之間有很大的區別。
你可以用切片的分配分配反轉副本:
L[:2] = L[1:None:-1]
或
L[:2] = reversed(L[:2])
這將替換第2個元素以相反的順序那些相同的元素:
>>> L = [42, 81, 13, 7]
>>> L[:2] = L[1:None:-1]
>>> L
[81, 42, 13, 7]
>>> L[:2] = reversed(L[:2])
>>> L
[42, 81, 13, 7]
有關如何工作的詳細信息,另請參閱Explain Python's slice notation。
我不這麼認爲,當我鍵入:L [0:2] = [8,9]。它確實改變了列表L –
@ĐạtNguyễnThành:是的,因爲這是**任務**。 'L [0:2] .reverse()'不分配任何東西。 –
哦,我爲此苦苦掙扎!非常感謝你:D,我沒有高興,只是因爲我不能。上帝保佑你的朋友 –