Python列表中字符串的子串列表

7

我希望找出一个字符串列表是否包含在另一个列表中。例如,我有:

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

和子字符串列表
    substrings = ['item', 'subject']

我希望找出字符串列表中是否包含'item'或者'subject'。分别来看,我会这样做:

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

这适用于一个子字符串,但我希望找到一种漂亮的方式,在子字符串列表中搜索这两个字符串。


1
你可以嵌套 any,或编写更复杂的生成器表达式来创建交叉积,或使用 itertools.product 来代替。 - jonrsharpe
你期望的结果是什么?您想要string_listsubstring项开头的匹配,还是要求完全匹配? - Alexander
我只想知道一个真或假的答案,即字符串列表是否包含子字符串列表中的任何一个字符串。 - Jonathan C Lee
3个回答

6
any(y in x for x in string_list for y in substrings)

2

由于子字符串实际上位于开头,因此可以使用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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接