我有一个单词列表:
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)
如果数组中的元素包含列表中的任何值,我想枚举数组并返回一个布尔值。输出为布尔值列表:
[True, True, False, True]
现在我只有这段代码,它只给了我一个我不想要的索引列表:
idx_mask = [idx for idx, element in enumerate(string_arr) if any(x in element for x in list1)]
我怎样才能获得布尔值列表?
答案 0 :(得分:1)
print([any(x in element for x in list1) for element in list2])
答案 1 :(得分:0)
要仅查找完整的单词匹配项,您应该将它们与 list2
中的每个字符串进行匹配,以空格分割以创建单词数组:
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]
这是预期的结果。