【问题标题】:Delete empty lists from tuple from inside a list从列表中删除元组中的空列表
【发布时间】:2021-01-27 05:54:42
【问题描述】:

我有一个元组列表,其中又包含 2 个元素和一个列表。我希望删除具有空列表的元组。

l = [('Receipt total', []), ('Total Amount (AED)', []), ('Grand total', []), ('Net Amount', []), ('Total Amount', ['593.52']), ('Net total ', []), ('Total', []), ('Gross Amount', []), ('Total Bill (AED)', []), ('Total AED', []), ('Net total in AED', []), ('Total (AED)', []), ('Total Invoice Amount', []), ('Invoice total', []), ('Amount Due', []), ('Grand Total (AED)', []), ('Total Amount Payable', []), ('Net Amt', []), ('Before Total', [('28.26\n', '28.26\n')]

预期输出:

l = [('Total Amount', ['593.52']), ('Before Total', [('28.26\n', '28.26\n')]

我试过了:

l = [t for t in i if t != [] for i in l]

它给我一个Memory Error

【问题讨论】:

  • 元组是不可变的;您将不得不创建过滤副本! (标题具有误导性!
  • [t for t in l if t[1]]
  • @anurag 我不明白为什么要改变元组。
  • @anurag 永远不要相信兔子和标题!

标签: python python-3.x list tuples


【解决方案1】:

一种使用list理解解包的方法:

[(i, j) for i, j in l if j]

输出:

[('Total Amount', ['593.52']), ('Before Total', [('28.26\n', '28.26\n')])]

【讨论】:

    【解决方案2】:

    您的输入有问题,对于解决方案,您可以简单地执行以下操作:

    l = [('Receipt total', []), ('Total Amount (AED)', []), ('Grand total', []), ('Net Amount', []), ('Total Amount', ['593.52']), ('Net total ', []), ('Total', []), ('Gross Amount', []), ('Total Bill (AED)', []), ('Total AED', []), ('Net total in AED', []), ('Total (AED)', []), ('Total Invoice Amount', []), ('Invoice total', []), ('Amount Due', []), ('Grand Total (AED)', []), ('Total Amount Payable', []), ('Net Amt', []), ('Before Total', [('28.26\n', '28.26\n')])]
    
    l = [i for i in l if i[1]]
    print(l)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-17
      相关资源
      最近更新 更多