2011-01-10 36 views
1
lst = [(32,(4,5)),(55,(5,6))] 

給定一個元組(4,5),所以我想刪除lst中的第一個元組。怎麼做?Python內置列表:刪除一個項目

對不起,這是不明確的,我的意思是第二個項目中的每個列表項中刪除列表項

回答

7
lst2 = [(x, y) for (x, y) in lst if y != (4, 5)] 

刪除所有(4,5)元組,而不僅僅是第一個實例。

2

你可以過濾列表:

lst = filter(lambda x, y: y != (4,5), lst) 
+0

如果(5,6)得到了如何? – user469652 2011-01-10 06:01:47

0

你的意思lst2 = [(a,) for (a,b) in lst]' ?
That will result in
[(32),(55)]`

1

這將刪除第一個列表條目,其第二部分比賽,但使用這種去除不止一個。要做多個使用list comp的其他人建議或迭代列表的副本(對於eaxmple:for n in L[:])。修改正在迭代的列表會產生意外的結果。

>>> def remove(L,t): 
... for n in L: 
...  if n[1]==t: 
...  L.remove(n) 
...  break 
... 
>>> L=[(1,(2,3)),(4,(5,6)),(7,(2,3))] 
>>> remove(L,(2,3)) 
>>> L 
[(4, (5, 6)), (7, (2, 3))]