2017-07-27 89 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逻辑。非常感谢 –