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

时间:2021-03-06 21:39:42

标签: python arrays list numpy contains

我有一个单词列表:

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)]

我怎样才能获得布尔值列表?

2 个答案:

答案 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]
这是预期的结果。