仅在集合中查找超字符串

时间:2019-03-03 03:30:54

标签: python numpy

虽然我试图帮助回答this问题,但我认为numpy是python循环的绝佳替代品,尽管我似乎无法弄清楚该如何做,现在它已成为我想弄清楚的难题出来但不能。我不想被问到相同的问题,但我确实认为这里的numpy可能会更好。

眼前的问题

给出大量字符串

data = ['test', 'foo','testing','foobar', 'bar', 'pie', 'applepie', ...]

仅在给定列表中的字符串中返回包含子字符串的字符串列表:

['testing', 'foobar', 'applepie']

我尝试了以下操作:在几次其他失败的尝试之后,但这对我来说似乎最有意义

import numpy as np

data = ['test', 'foo','testing','foobar', 'bar', 'pie', 'applepie']

d = np.unique(np.array(data))
print(d[((d in d) & (not d == d))])

显然,这将返回一个空数组,但是我似乎无法找出正确的过滤器。我见过其他类似的问题/答案,但令我沮丧的是,没有答案使用numpy。

1 个答案:

答案 0 :(得分:0)

我不认为numpy是实现此目的的好方法,为什么不像这样理解列表?

print([i for i in data if any([x in i and x!=i for x in data])])

输出:

['testing', 'foobar', 'applepie']

我认为这已经非常好了,您回答正确,但是还可以编写一个循环:

l = []
for i in data:
    if any([x in i and x!=i for x in data]):
        l.append(i)
print(l)