2010-10-23 73 views
3

我有一個像列表:如何刪除運算各組的最後一個元素列表中的

alist = [[a,b,(1,2)], [a,b,(1,2)], [a,b,(1,2)]] 

我想從列表中的所有元素中刪除最後一個元素。所以結果將是:

alist = [[a,b], [a,b], [a,b]] 

有沒有一種快速的方法來做到這一點?

+1

什麼教程你用學習Python去中間的東西像列表解析等? – 2010-10-23 14:27:53

+0

這個無意義的加法是什麼?你是什​​麼意思,它不起作用?你爲什麼要發佈一個答案的代碼? – SilentGhost 2010-10-23 14:50:49

+0

「你的腳本在Python shell中工作,但在我的程序中不起作用,不知道爲什麼是這樣」?這是什麼意思? – 2010-10-23 19:40:38

回答

9

您可以使用列表理解來創建一個刪除最後一個元素的新列表。

>>> alist = [[1,2,(3,4)],[5,6,(7,8)],[9,10,(11,12)]] 
>>> [x[:-1] for x in alist]  # <------------- 
[[1, 2], [5, 6], [9, 10]] 

但是,如果你想效率,你可以修改就地名單:

>>> alist = [[1,2,(3,4)],[5,6,(7,8)],[9,10,(11,12)]] 
>>> for x in alist: del x[-1]  # <------------- 
... 
>>> alist 
[[1, 2], [5, 6], [9, 10]] 
+0

擊敗我15秒。我不應該浪費時間想知道爲什麼這個人沒有使用一個好的Python教程。 – 2010-10-23 14:27:37

+0

我覺得有衝動去除一些混亂。你的第一個答案大致是完美的。這個詳細的例子可能會更有幫助,但是,我認爲這種清晰的代碼更加清晰,並且有兩條注意力分散在這個基本的,清晰的代碼中。 – 2010-10-23 14:31:30

+0

「如果你想效率」?這是如何更有效率?你有一些數字來支持這一說法嗎? – 2010-10-23 16:01:58

0

這是基本的Python的東西。後來讀了Python教程

>>> alist = [[1,2,(3,4)],[5,6,(7,8)],[9,10,(11,12)]] 
>>> for li in alist: 
...  print li[0:2] 
... 
[1, 2] 
[5, 6] 
[9, 10] 
>>> 

後,你應該能夠做到這一點,你可以

相關問題