使用其他列表过滤python列表

时间:2017-07-27 17:43:12

标签: python-3.x

如果一个列表中的字符串是另一个列表的一部分,如何查找:

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 个答案:

答案 0 :(得分:1)

您的name循环过早结束。

如果string不在False,则返回Robert。由于b_namesJon中的第一项,它会结束循环并且不会继续Aryareturn 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']
diff_session.show(8,False):

|userid|platform            |previousTime           |currentTime            |timeDifference |
|1234  |13                  |null                   |2017-07-20 10:49:30.027|null           |
|1234  |13                  |null                   |2017-07-20 10:04:23.1  |null           |
|1234  |13                  |2017-07-20 10:04:23.1  |2017-07-20 10:06:23.897|120            |
|1234  |13                  |2017-07-20 10:04:23.897|2017-07-20 10:40:29.472|2166           |
|1234  |13                  |2017-07-20 10:40:29.472|2017-07-20 10:40:50.347|11             |
|1234  |13                  |2017-07-20 10:40:30.347|2017-07-20 10:51:16.458|646            |
|1234  |13                  |2017-07-20 10:51:16.458|2017-07-20 10:51:17.427|1              |