虽然我试图帮助回答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。
答案 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)