2017-07-27 45 views
0

過濾Python列表如何查找如果一個列表的字符串是另一個列表的一部分:使用另一個列表

b_names = ['robert', 'jon', 'arya'] 
a_names = ['rya', 'fish'] 


def filterA(name): 
for string in b_names: 
    if name in string: 
     return True 
    else : 
     return False 

final_list = filter(filterA,a_names) 

的final_list是空的,應該包含字符串RYA因爲RYA存在作爲從第一個列表中的arya子字符串。

這裏有什麼錯誤?

回答

1

您的for循環結束得太早。

如果name不在string中,則返回FalseRobertb_names中的第一項,它結束循環並且不繼續到JonArya。你需要把你的return Falsefor循環後

b_names = ['robert', 'jon', 'arya'] 
a_names = ['rya', 'fish'] 


def filterA(name): 
    for string in b_names: 
     if name in string: 
      return True 

    return False 


final_list = filter(filterA, a_names) 
print final_list 

>>> ['rya'] 
+0

感謝察覺我覺得我莫名其妙地忽略了filterA邏輯。非常感謝 –

相關問題