【问题标题】:Remove all zeroes from a list of tuples [duplicate]从元组列表中删除所有零 [重复]
【发布时间】:2019-11-24 16:00:17
【问题描述】:

我在 python 中有一个元组列表:

例子:

lstA = [ (12,0,20,50), (30,70,80,15), (11,12,0,35), (7,6,5,4), (1,0,0,4) ]

我希望在原始列表元组中作为输出,并删除零值。 所以对于上面的输入,输出应该是:

lstA = [(12,20,50), (30,70,80,15), (11,12,35), (7,6,5,4), (1,4)]

如何以pythonic方式做到这一点?

【问题讨论】:

    标签: python python-3.x python-2.7 list tuples


    【解决方案1】:

    如果您熟悉其他编程语言中的filterlambda,您可能更喜欢这样的东西,即使它不像pythonic:

    >>> original_tuples = [(12, 0, 20, 50), (30, 70, 80, 15), (11, 12, 0, 35), (7, 6, 5, 4), (1, 0, 0, 4)]
    >>> tuples_without_zero = [tuple(filter(lambda x: x != 0, t)) for t in original_tuples]
    >>> tuples_without_zero
    [(12, 20, 50), (30, 70, 80, 15), (11, 12, 35), (7, 6, 5, 4), (1, 4)]
    

    【讨论】:

      【解决方案2】:

      您可以通过列表压缩传递这些内容并随时创建新的元组:

      lstA = [ (12,0,20,50), (30,70,80,15), (11,12,0,35), (7,6,5,4), (1,0,0,4) ]
      
      cleaned = [tuple(n for n in sublist if n != 0) for sublist in lstA]
      
      # [(12, 20, 50), (30, 70, 80, 15), (11, 12, 35), (7, 6, 5, 4), (1, 4)]
      

      【讨论】:

      • 谢谢!这回答了我一直在寻找的东西。
      猜你喜欢
      • 2014-04-01
      • 1970-01-01
      • 2019-06-12
      • 2018-10-17
      • 1970-01-01
      • 2018-12-25
      • 1970-01-01
      • 2019-12-09
      • 2020-05-08
      相关资源
      最近更新 更多