代码之家  ›  专栏  ›  技术社区  ›  Dmitry

可以用Python中的另一个字符串列表过滤子字符串列表吗?

  •  2
  • Dmitry  · 技术社区  · 7 年前

    要用Python中的另一个字符串列表过滤字符串列表,我们可以使用以下代码:

    result = [x for x in strings1 if x in strings2]
    

    但我们如何用另一个字符串列表过滤子字符串列表呢?例如:

    substrings = ['a', 'b', 'c']
    strings = ['_b_', '_c_', '_d_']
    

    结果应为:

    result = ['b', 'c']
    
    2 回复  |  直到 7 年前
        1
  •  5
  •   Dekel    7 年前

    你可以使用这样的东西:

    [x for x in substrings if [y for y in strings if x in y]]
    


    In [1]: substrings = ['a', 'b', 'c']
    
    In [2]: strings = ['_b_', '_c_', '_d_']
    
    In [3]: [x for x in substrings if [y for y in strings if x in y]]
    Out[3]: ['b', 'c']
    
        2
  •  3
  •   Moinuddin Quadri    7 年前

    实现这一点的优雅方法是使用 any 作为:

    >>> substrings = ['a', 'b', 'c']
    >>> my_strings = ['_b_', '_c_', '_d_']
    
    >>> [s for s in substrings if any(s in i for i in my_strings)]
    ['b', 'c']
    

    在这里 任何 True 如果任何字符串 substrings 在中作为子字符串存在 my_strings . 一旦找到匹配项,它将缩短迭代(不检查其他匹配项),并返回结果,如下所示: . 由于 任何