检查字符串是否包含Python

时间:2018-03-08 22:18:06

标签: python string list

我有一个清单a:

a = ['2005', '2006']

并列出b:

b = ['2005.123', '2005.234', '2006.123', '2007.234']

如果我想要b中包含字符串' 2005'的所有元素的列表,我会这样做:

[value for value in b if '2005' in str(value)]

但是我想要一个包含b中所有值的列表,其中包含列表a中的任一字符串值(列表a和b可以是多个元素长),而且这个值不起作用:

[value for value in b if ['2005', '2006'] in str(value)]

我希望代码返回

['2005.123', '2005.234', '2006.123']

有没有一种更简单的方法可以做到这一点,而不使用循环?

2 个答案:

答案 0 :(得分:4)

使用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)

答案 1 :(得分:2)

你要求"包含"但你的例子有前缀。如果它的前缀需要使用str.startswith,这将允许您传递一组前缀作为其第一个参数:

a_tup = tuple(a)
[value for value in b if value.startswith(a_tup)]
相关问题