代码之家  ›  专栏  ›  技术社区  ›  Denver Dang

检查列表中的一项是否在列表列表中

  •  -1
  • Denver Dang  · 技术社区  · 5 年前

    假设我有一个列表列表,例如:

    my_list = [['ab', 'bc'], ['cd', 'de'], ['ef', 'fg'], ['gh', 'hi']]
    

    然后我有一个禁止使用的单词列表,例如:

    no_go_list = ['ab', 'fg']
    

    我想做的是得到一个列表,其中它检查 no_go_list 在中的一个列表中 my_list ,所以结果应该是:

    final_list = [['cd', 'de'], ['gh', 'hi']]
    

    我想这样做:

    final_list = [l for l in my_list if not no_go_list in l]
    

    但这会检查 禁止进入列表 存在项。所以我猜这需要一些修改,我只是不知道怎么做。

    2 回复  |  直到 5 年前
        1
  •  3
  •   Prune    5 年前

    你需要检查一下 no_go_list 在元素中。因此,“显而易见”的方法是使用 any 功能。

    final_list = [l for l in my_list 
                    if not any(word in l for word in no_go_list)]
    

    你发布的代码 检查两个项目是否都存在:它检查 列表 值存在。你需要像这样的东西

    my_list = [[['ab', 'fg'], 'bc'], ['cd', 'de'], 
                ['ef', ['ab', 'fg']], ['gh', 'hi']]
    
        2
  •  1
  •   superb rain    5 年前

    你可以用一套。。。

    >>> list(filter(set(no_go_list).isdisjoint, my_list))
    [['cd', 'de'], ['gh', 'hi']]