這個問題的邏輯或代碼是什麼? reverse()
函數沒有任何參數,list[::-1]
也是一樣的。如何以簡單的方式做到這一點?顛倒一組列表元素並將其存儲到列表中?
例如,給定:
list = [1,5,4,3,2,6]
倒車5 ... 2,輸出將是:
list = [1,2,3,4,5,6]
這個問題的邏輯或代碼是什麼? reverse()
函數沒有任何參數,list[::-1]
也是一樣的。如何以簡單的方式做到這一點?顛倒一組列表元素並將其存儲到列表中?
例如,給定:
list = [1,5,4,3,2,6]
倒車5 ... 2,輸出將是:
list = [1,2,3,4,5,6]
你可以做這樣的事情:
l = [1,5,4,3,2,6]
index5 = l.index(5)
index2 = l.index(2)
l[index5:index2+1] = l[index2:index5-1:-1]
如果您希望它更加明確,你可以使用reversed
:
l[index5:index2+1] = reversed(l[index5:index2+1])
誰低估了這個答案,你能解釋一下爲什麼嗎? –
沒有downvote,但可能是因爲它只適用於具有獨特元素的列表。不是像其他提議的答案一樣的通用解決方案。 – mkiever
我真的很震驚:( –
你可以用列表的片段分配,它修改就地名單:
>>> L = [1, 5, 4, 3, 2, 6]
>>> L[1:5] = L[4:0:-1]
>>> L
[1, 2, 3, 4, 5, 6]
編輯:對不起,我誤解你的問題。
>>> l = [1, 5, 4, 3, 2, 6]
>>> temp = l[1:5]
>>> temp.reverse()
>>> l[1:5] = temp
>>> l
>>> [1, 2, 3, 4, 5, 6]
不是什麼OP想要的。 – MooingRawr
您可以重新分配列表到同一切片的切片反
l = [1,5,4,3,2,6]
l[1:5] = l[1:5][::-1]
print(l)
#[1, 2, 3, 4, 5, 6]
感謝他的工作。 –
我覺得'l [1:5] =顛倒了(l [1:5])'更好閱讀,但原則上 – mkiever
'l [4:0:-1]'會比'l [1:5] [:: - 1]'更高效,因爲它只會創建一個新列表 –
得到了很多downvote的!爲什麼? –
不要使用'list'作爲變量名稱,你會隱藏一個內置的[函數](https://docs.python.org/2/library/functions.html#list)。 –