繁体   English   中英

如果项目包含另一个列表中的任何字符串,则从列表中获取项目(Python)

[英]Get items from list if the item contains any of the strings in another list (Python)

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

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]

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

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

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

你快到了,但你不能交叉检查多个子字符串与一个字符串。 您可以做的是使用两个条件与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)]

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM