python算法:Which are in?

Given two arrays of strings a1 and a2 return a sorted array r in lexicographical order of the strings of a1 which are substrings of strings of a2.
#Example 1: a1 = ["arp", "live", "strong"]
a2 = ["lively", "alive", "harp", "sharp", "armstrong"]

returns ["arp", "live", "strong"]

#Example 2: a1 = ["tarp", "mice", "bull"]
a2 = ["lively", "alive", "harp", "sharp", "armstrong"]

returns []


我的解法:

def in_array(array1, array2):
    l=[]
    for i in array1:
        for j in array2:
            if i in j:   # and not i in l:
                l.append(i)
                break  #注意什麼時候可以不寫
    l=list(set(l))#set[]會變成{},sort只用於[],所以還要在list()一樣 #sorted()就可以作用於{}!!
    l.sort()#排序
    return l

  #set一個[]後變會{},所以l=list(set([]))但是但是但是!

  也可以這樣寫:

l=sorted(set(l)) sorted又讓{}變[]

大神解法:

def in_array(a1, a2):
    return sorted({sub for sub in a1 if any(sub in s for s in a2)})

又是牛逼的單行!!

還有any()的用法

{}換成[]就還是有重複出現,{}是不重複的一種格式!!!!




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章