提问人:Nikko Cleri 提问时间:9/19/2023 更新时间:9/19/2023 访问量:38
如何检查列表的元素是否包含另一个列表的元素之一
how to check if element of list contains one of the elements of another list
问:
我有一个字符串列表,我需要返回一个列表,其中包含此列表中的元素,其中包含 中的任何字符串。我已经尝试了以下列表推导['asdf', 'qwer', 'zxcv']
['a', 'g', 'y']
lst = ['asdf', 'qwer', 'zxcv']
target_strings = ['a', 'g', 'y']
[element for element in lst if any(target_strings) in element]
这不起作用,就像 一样 ,不是 .在本例中,目标输出为 。any(target_strings)
bool
string
['asdf']
答:
2赞
Tim Roberts
9/19/2023
#1
你很接近。
>>> [e for e in lst if any(t in e for t in target_strings)]
['asdf']
>>>
4赞
Barmar
9/19/2023
#2
参数 to 应该是一系列条件。如果任何条件为真,则返回 true。any()
你给它一个字符串序列。当字符串用作条件时,如果它不是空的,则为 true。因此,您只是在测试是否有任何一个不是空的,这始终是正确的。target_strings
将测试放在参数中。in
any()
[element for element in lst if any(s in element for s in target_strings)]
0赞
Timeless
9/19/2023
#3
除了 @Barmar 和 @Tim Roberts 的答案之外,为了给出另一种方法,您可以通过在元素列表和目标之间进行交
集来使用集合运算:
[e for e in lst if set(e).intersection(target_strings)] # which gives ['asdf']
评论