使用另一个列表
问题描述:
过滤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子字符串。
这里有什么错误?
答
您的for
循环结束得太早。
如果name
不在string
中,则返回False
。 Robert
是b_names
中的第一项,它结束循环并且不继续到Jon
或Arya
。你需要把你的return False
你for
循环后
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']
感谢察觉我觉得我莫名其妙地忽略了filterA逻辑。非常感谢 –