搜索与另一个字符串元素列表匹配的字符串元素列表

时间:2016-03-21 15:00:56

标签: python

我有一个名为names的字符串列表,我需要使用names列表中的每个元素搜索pattern列表中的每个元素。找到了几个可以循环访问单个字符串但不是字符串列表的指南

a = [x for x in names if 'st' in x]

提前谢谢!

names = ['chris', 'christopher', 'bob', 'bobby', 'kristina']
pattern = ['st', 'bb']

期望的输出:

a = ['christopher', 'bobby', 'kristina]

2 个答案:

答案 0 :(得分:8)

any()功能与generator expression

一起使用
a = [x for x in names if any(pat in x for pat in pattern)]

any()是一个短路函数,因此第一次遇到匹配的模式时,它返回True。由于我使用的是生成器表达式而不是列表推导,因此甚至不会检查匹配的第一个模式之后的模式。这意味着这只是最快的方式。

答案 1 :(得分:2)

您可以这样做:

[name for name in names if any([p in name for p in pattern])]

代码是自我解释的,只是大声朗读;我们正在创建一个包含其中一个模式的所有名称的列表。

使用两个循环:

for name in names:
    for pattern in patterns:
        if pattern in name:
            # append to result