以字典顺序python返回排序数组

2024-05-18 09:39:05 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我需要它回来:

^{pr2}$

我的代码是:

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的子字符串的已排序元素?在


Tags: livea2排序a1strongarmstrongarpsharp
1条回答
网友
1楼 · 发布于 2024-05-18 09:39:05

您只需使用一个filter并检查a2中是否存在包含这样一个子字符串的any(..)元素:

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

如果您也希望对结果进行排序,可以使用sorted(..)

^{pr2}$

如果要消除重复项,可以使用set(..)

^{3}$

该算法将在O(n×m+n×log(n))中运行,n表示a1中的元素个数,m表示a2中的元素数。在

如果您可以在ar2上进行预处理(例如生成trie),您可以从O(n)方面提高算法的复杂性。但是只有当a1中的元素数量与{}中的元素数量相比很大时,这才是有益的。在

相关问题 更多 >