如何检查列表的元素是否包含另一个列表的元素之一

问题描述 投票:0回答:2

我有一个字符串列表

['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']

python string list list-comprehension
2个回答
1
投票

你很接近。

>>> [e for e in lst if any(t in e for t in target_strings)]
['asdf']
>>> 

1
投票

any()
的参数应该是一系列条件。如果任何条件为真,则返回 true。

你给它一个字符串序列。当使用字符串作为条件时,如果它不为空则为真。所以你只是测试是否有任何

target_strings
不为空,这总是正确的。

in
测试放入
any()
参数中。

[element for element in lst if any(s in element for s in target_strings)]
© www.soinside.com 2019 - 2024. All rights reserved.