2013-04-16 22 views
4

我對Python相當陌生,這是一個相當基本的問題。如何優雅地從列表中切掉不同長度的尾巴?

我有一個列表lst,並必須在某個點計算的整數n0<=n<=len(lst)告訴我,(在手的目的),我應該丟棄列表的最後n元素。想到達到這一點的聲明是del lst[-n:]或者可能是lst[-n:]=[](我已經發現在任何情況下在冒號後添加0並不是一個好主意,因爲在此設置中零不認爲大於-n)。但是,n==0這兩個變體都會失敗,因爲列表完全清空。如果我真的插入一個明確的測試零在這裏,或彎腰編寫

del lst[len(lst)-n:] 

或者是有什麼更優雅(可靠),可以在這裏做什麼?

+1

'if n:del lst [-n:]'真的那麼繁重嗎? –

+2

'del lst [len(lst)-n:]'是完美的...提交作爲你自己的答案並接受它 – jamylak

回答

2

考慮其他的可能性建議後,我的結論是

del lst[len(lst)-n:] # do not remove the len(lst) since n==0 is possible ! 

是乾淨的,因爲它得到。 len(lst)的計算可能不是很漂亮,但其代表的成本可以忽略不計。

相關問題