2014-03-27 198 views
1
>>> x=[("x1","x2","x3"),("x1","x2"),("x2","x3"),("x3","x4")] 
>>> x 
[('x1', 'x2', 'x3'), ('x1', 'x2'), ('x2', 'x3'), ('x3', 'x4')] 

我想刪除列表中的元組 - X,如果len(x[id])==3len(x[0]==3),所以它會被刪除,[('x1', 'x2'), ('x2', 'x3'), ('x3', 'x4')]就是我想要的,我怎麼能寫代碼?如何有條件地從元組列表中刪除元素?

[del element if len(element[id]==3) for id,element in enumerate(x)] 

invalid syntax. 

回答

6

使用列表理解來過濾元素,保持一切不長3:

x = [el for el in x if len(el) != 3] 

演示:

>>> x = [('x1', 'x2', 'x3'), ('x1', 'x2'), ('x2', 'x3'), ('x3', 'x4')] 
>>> [el for el in x if len(el) != 3] 
[('x1', 'x2'), ('x2', 'x3'), ('x3', 'x4')] 
+0

或者作爲一個略少pythonic的方法:'X =過濾器(lambda:len(el)!= 3,x)'。 – Phylogenesis

+0

在Python 3中,它生成一個迭代器而不是一個列表。 –