我有一个字符串列表
['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']
。
你很接近。
>>> [e for e in lst if any(t in e for t in target_strings)]
['asdf']
>>>
any()
的参数应该是一系列条件。如果任何条件为真,则返回 true。
你给它一个字符串序列。当使用字符串作为条件时,如果它不为空则为真。所以你只是测试是否有任何
target_strings
不为空,这总是正确的。
将
in
测试放入 any()
参数中。
[element for element in lst if any(s in element for s in target_strings)]