【问题标题】:Get items from list if the item contains any of the strings in another list (Python) [closed]如果项目包含另一个列表中的任何字符串(Python),则从列表中获取项目[关闭]
【发布时间】:2022-01-22 12:02:25
【问题描述】:

我有一个看起来像这样的列表:

a_list = ['abc','acd','ade','bef','fba','adf','fac']

我想要列表中包含abac 的所有项目。从上面的例子中,我希望列表是:

b_list = ['abc','acd','fac']

我尝试了以下方法,但它给了我一个TypeError

b_list = [x for x in a_list if any(['ab','ac']) in x]

【问题讨论】:

  • 未配对[,需要]。

标签: python string list


【解决方案1】:

any() 的参数必须是一个布尔序列。你只有一个布尔值,这不是你想要的条件。

您想测试abac 中的每一个是否都在字符串中,而不是它们的元组或列表中。

b_list = [string for string in a_list if any(substring in string for substring in ('ab','ac'))]

【讨论】:

    【解决方案2】:

    你快到了,但你不能交叉检查多个子字符串和一个字符串。您可以做的是使用or 的两个条件:

    b_list = [x for x in a_list if 'ab' in x or 'ac' in x]
    

    如果您有要检查的子字符串列表,您可以在您的条件下使用any(),但您必须遍历子字符串:

    subs   = ('ab','ac')
    b_list = [x for x in a_list if any(s in x for s in subs)]
    

    【讨论】:

      【解决方案3】:

      你几乎明白了。您需要遍历 ['ab','ac'] 以检查它是否存在于 a_list 中的项目中。

      b_list = [item for item in a_list if any(x in item for x in ['ab','ac'])]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-13
        • 1970-01-01
        • 1970-01-01
        • 2021-09-16
        • 2021-07-04
        • 2017-01-28
        • 2018-11-06
        • 1970-01-01
        相关资源
        最近更新 更多