我有一个列表:
a = ['2005', '2006']
和列表b:
b = ['2005.123', '2005.234', '2006.123', '2007.234']
如果我想要一个包含字符串“2005”的 b 中所有元素的列表,我会这样做:
[value for value in b if '2005' in str(value)]
但我想要一个包含列表 a 中任一字符串值的 b 中所有值的列表(列表 a 和 b 可以是几个元素长),而这个不起作用:
[value for value in b if ['2005', '2006'] in str(value)]
我希望代码返回
['2005.123', '2005.234', '2006.123']
有没有不使用循环的更简单的方法?
最佳答案
使用any()
:
[value for value in b if any(d in value for d in a)]
#['2005.123', '2005.234', '2006.123']
此外,您不必调用 str(value)
,因为它已经是一个字符串。
更新:为了好玩,这是使用 filter()
做同样事情的另一种方法:
filter(lambda value: any(d in value for d in a), b)
关于python - 检查一个字符串是否包含 Python 列表中的任一字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49183423/