繁体   English   中英

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

[英]return sorted array in lexicographical order python

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

您可以简单地使用一个filter并检查a2是否包含包含此类子字符串的any(..)元素:

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(..)

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

该算法将在O(n×m + n×log(n))中运行其中 a1的元素数为n ,而a2的元素数为m

如果可以在ar2上进行预处理(并生成例如trie),则可以提高O(n)的算法复杂度。 但这仅在a1中的元素数量a2的元素数量的情况下才是有益的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM