簡體   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