返回数组排序在字典顺序蟒蛇

问题描述:

a1 = ['arp', 'bull', 'mice'] 
a2 = ["lively", "alive", "harp", "sharp", "armstrong"] 

我需要它返回:返回数组排序在字典顺序蟒蛇

['arp'] 

我的代码是:

def in_array(array1, array2): 
    x = array1 
    return sorted(x) 

其适用于:

a1 = ["live", "arp", "strong"] 
a2 = ["lively", "alive", "harp", "sharp", "armstrong"] 
r = ['arp', 'live', 'strong'] 

怎么办我通过一个数组进行排序,并只匹配那些已排序的元素是a2的子串吗?

+0

你想*排序*?或*过滤器*? –

+0

我想排序并过滤 –

您可以简单地用一个filter,并检查是否有a2any(..)元素包含了这样的字符串:

def in_array(a1,a2): 
    return filter(lambda e1: any(e1 in e2 for e2 in a2),a1) 

在你想要的结果一并整理的情况下,你可以使用sorted(..)

def in_array(a1,a2): 
    return sorted(filter(lambda e1: any(e1 in e2 for e2 in a2),a1)) 

如果你想消除重复,你可以使用set(..)

​​

该算法将在为O(n×米+ N ×的log(n))与Ñ元件的数量在a1,和a2元素数运行。

如果您可以对ar2进行预处理(并生成例如trie),则可以通过O(n)提高算法复杂度。但是,如果a1中元素的数量与a2中元素的数量相比是很大的,那么这是有益的。

+0

谢谢!现在它只通过了一项测试。我需要它不返回重复项(只返回1份)。我不熟悉lambda如何工作,但我正在阅读它。任何关于我如何去做这件事的建议? –