python - 检查一个字符串是否包含 Python 列表中的任一字符串

标签 python string list

我有一个列表:

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/

相关文章:

python - 为什么 HTTPS 请求会产生 SSL CERTIFICATE_VERIFY_FAILED 错误?

python - Colab 以 ^C 结束

javascript - 查找数组中的某些字符串(Javascript)

c++ - 在 C++ 中使用基于范围的 for 循环

python - Python 中的 s-t 切割算法

python - 在 WSL 中使用 python/brownie 时遇到问题

Java在索引处分割字符串而不切割单词

python - 如何在 Python 3.x 中过滤掉包含无效字符的列表元素?

python - 满足列表列表中条件的元组中值的频率分布

php - 列出一个目录下的所有文件 PHP