删除不符合特定条件的列表?

时间:2011-10-26 21:03:42

标签: python algorithm

我对如何处理这个问题感到有点困惑。

我有大量的列表,我希望删除列表中包含不以特定数字开头的内容。

例如。说我希望只保留在以下列表中至少有一个以4开头的节点的列表:

['4-7', '2-5', '2-9', '2-32', '2-16', '2-29', '2-13', '2-26', '2-20', '2-23']
['2-32', '2-31', '2-36', '2-28', '2-34', '2-43', '2-41', '2-39']

在这种情况下,我应该删除第二个并保留第一个列表。我知道如何检测哪些以4开头,我可以找出具有该特征的列表但不知道如何标记其他列表以进行删除。

最好的方法是什么?我有很多这样的列表(几百万)所以我试图找到最便宜的方式来做到这一点。我想创建一个列表列表保持,然后将其与原始列表进行比较,并删除不在两个列表上的列表,但我试图避免太多嵌套for循环。

1 个答案:

答案 0 :(得分:3)

您可以尝试列表理解:

result = [yourlist for yourlist in yourlists
          if any(node.startswith('4-') for node in yourlist)]

如果您不希望一次性将结果存储在内存中,则为生成器表达式:

result = (yourlist for yourlist in yourlists
          if any(node.startswith('4-') for node in yourlist))

查看在线工作:ideone