【问题标题】: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.

【问题讨论】:

    标签: python list list-comprehension idioms


    【解决方案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 中生成的是迭代器,而不是列表。
    猜你喜欢
    • 2017-12-15
    • 2015-08-21
    • 2021-03-07
    • 2021-11-16
    • 1970-01-01
    • 2020-06-23
    • 2018-08-12
    • 2018-08-08
    • 1970-01-01
    相关资源
    最近更新 更多