Python:使用列表推导按子串列表过滤列表

cra*_*irk 5 python string substring list-comprehension list

我认为这是一个简单的问题,所以我将直接举一个例子.

鉴于这两个列表:

x = ['a', 'ab', 'abc', 'bc', 'c', 'ac']
y = ['a', 'b']
Run Code Online (Sandbox Code Playgroud)

如何编写列表推导来过滤列表x,结果如下:

result = ['c']
Run Code Online (Sandbox Code Playgroud)

我想要一个列表推导,它将y中字符串的任何部分匹配排除在x中的字符串之外.例如,y中的'a'将匹配x中的'a','ab','abc'和'ac'.

这种理解只匹配整个字符串: result = [r for r in x if r not in y]

如果已经问过这个问题,我很乐意接受前一个答案的链接.也就是说,我还没有在SO上找到一个.

Chr*_*tin 12

全部使用:

result = [r for r in x if all(z not in r for z in y)]
Run Code Online (Sandbox Code Playgroud)

或者任何:

result = [r for r in x if not any(z in r for z in y)]
Run Code Online (Sandbox Code Playgroud)