如何有条件地从元组列表中删除元素?

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 中生成的是迭代器,而不是列表。

以上是关于如何有条件地从元组列表中删除元素?的主要内容,如果未能解决你的问题,请参考以下文章

从元组列表中删除括号[重复]

(Swift)如何从元组数组[(Date, MyClass)]中获取元组元素(Date, MyClass)的索引?

从元组列表中获取具有“NaN”的元组索引

如何正确地从有效载荷中添加和删除元素? (或有条件更换)

从元组的元组中创建一个列表

如何从元组数组创建字典?