2017-01-18 21 views
-7

這個問題的邏輯或代碼是什麼? reverse()函數沒有任何參數,list[::-1]也是一樣的。如何以簡單的方式做到這一點?顛倒一組列表元素並將其存儲到列表中?

例如,給定:

list = [1,5,4,3,2,6] 

倒車5 ... 2,輸出將是:

list = [1,2,3,4,5,6] 
+0

得到了很多downvote的!爲什麼? –

+3

不要使用'list'作爲變量名稱,你會隱藏一個內置的[函數](https://docs.python.org/2/library/functions.html#list)。 –

回答

0

你可以做這樣的事情:

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]) 
+1

誰低估了這個答案,你能解釋一下爲什麼嗎? –

+1

沒有downvote,但可能是因爲它只適用於具有獨特元素的列表。不是像其他提議的答案一樣的通用解決方案。 – mkiever

+0

我真的很震驚:( –

3

你可以用列表的片段分配,它修改就地名單:

>>> L = [1, 5, 4, 3, 2, 6] 
>>> L[1:5] = L[4:0:-1] 
>>> L 
[1, 2, 3, 4, 5, 6] 
0

編輯:對不起,我誤解你的問題。

>>> l = [1, 5, 4, 3, 2, 6] 
>>> temp = l[1:5] 
>>> temp.reverse() 
>>> l[1:5] = temp 
>>> l 
>>> [1, 2, 3, 4, 5, 6] 
+2

不是什麼OP想要的。 – MooingRawr

3

您可以重新分配列表到同一切片的切片反

l = [1,5,4,3,2,6] 
l[1:5] = l[1:5][::-1] 
print(l) 
#[1, 2, 3, 4, 5, 6] 
+0

感謝他的工作。 –

+2

我覺得'l [1:5] =顛倒了(l [1:5])'更好閱讀,但原則上 – mkiever

+2

'l [4:0:-1]'會比'l [1:5] [:: - 1]'更高效,因爲它只會創建一個新列表 –

相關問題