如何检查数组中的元素是否包含列表中的任何值 Python

How to check if element in array contains any values from a list Python

我有一个单词列表:

list1 = ['foo', 'baz', 'bat']

和一个字符串数组:

list2 = ['foo word word word', 'word baz word word', 'word word word word', 'word word bat word']
string_arr = np.array(list2)

我想枚举整个数组,如果数组中的元素包含列表中的任何值,return 一个布尔值。输出为布尔值列表:

[True, True, False, True]

现在我所拥有的只是这段代码,它只给了我一个我不想要的索引列表:

idx_mask = [idx for idx, element in enumerate(string_arr) if any(x in element for x in list1)]

我怎样才能得到一个布尔值列表?

print([any(x in element for x in list1) for element in list2])

要只找到完整的单词匹配,您应该将它们与 list2 中的每个字符串匹配,然后用 space 拆分以生成一个单词数组:

print([any(x in element.split(' ') for x in list1) for element in list2]) 

测试:

list1 = ['foo', 'baz', 'bat', 'w']
list2 = ['foo word word word', 'word baz word word', 'word word word word', 'word word bat word']

结果是:
[True, True, False, True]
这是预期的结果。