2017-08-28 218 views
3

我想查找列表中是否包含子字符串列表。例如,我有:Python列表中的字符串列表中的子字符串

string_list = ['item1', 'item2', 'subject3', 'subject4'] 

,我想找到,如果“项目”或“主体”包括在string_list的任何项目子

substrings = ['item', 'subject'] 

的名单。单独来看,我会做这样的事情:

any('item' in x for x in string_list) 

本工程为一个字符串,但我想找到搜索的字符串列表中两个字符串的一个漂亮的方式。

+1

你可以嵌套'a或者编写一个更复杂的生成器表达式来创建交叉产品,或者使用'itertools.product'来为你做。 – jonrsharpe

+0

您的预期成果是什么?你想匹配'string_list'开头的'substring'项目,还是完全匹配? – Alexander

+0

我只是想真或假的字符串列表是否包含子字符串列表中的任何字符串。 –

回答

2
any(y in x for x in string_list for y in substrings) 
1

由于子实际上是在开始时,你可以使用str.startswith可以采取前缀的元组:

any(x.startswith(('item', 'subject')) for x in string_list) 
1

你可以试试这个:

string_list = ['item1', 'item2', 'subject3', 'subject4'] 

substrings = ['item', 'subject'] 

any(any(b in i for b in substrings) for i in string_list) 

输出:

True 
相关问题