如何有条件地从元组列表中删除元素?
Posted
技术标签:
【中文标题】如何有条件地从元组列表中删除元素?【英文标题】:How to conditionally delete elements from list-of-tuples? 【发布时间】:2014-05-06 11:45:32 【问题描述】:>>> x=[("x1","x2","x3"),("x1","x2"),("x2","x3"),("x3","x4")]
>>> x
[('x1', 'x2', 'x3'), ('x1', 'x2'), ('x2', 'x3'), ('x3', 'x4')]
我想删除列表中的元组--x ,如果len(x[id])==3
,len(x[0]==3)
,那么它将被删除 ,[('x1', 'x2'), ('x2', 'x3'), ('x3', 'x4')]
是我想要的,我怎么写代码?
[del element if len(element[id]==3) for id,element in enumerate(x)]
invalid syntax.
【问题讨论】:
【参考方案1】:使用列表推导过滤元素,保持长度不为 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')]
【讨论】:
或者作为一种稍微不那么 Pythonic 的方式:x = filter(lambda el: len(el) != 3, x)
.
在 Python 3 中生成的是迭代器,而不是列表。以上是关于如何有条件地从元组列表中删除元素?的主要内容,如果未能解决你的问题,请参考以下文章