比较两个不同大小的列表

时间:2017-03-01 23:25:49

标签: python

我需要比较单个列表列表中的元素。例如,这是我的两个列表:

writeInfinite

现在我的目标是在搜索列表中的每个项目中查找每个项目,如果两个项目listing = [['tl.48', 'tl.49', 'tl.57'], ['tl.23', 'tl.45', 'tl.12']]; search = [['tl.48','tl.57']]; 'tl.48'与列表中的项目匹配,那么我从列表中选择该项目并附加它在一个空列表中。 'tl.57'的大小为3个元素,listing[0]search[0][0]位于search[0][1]listing[0][0]。如何将listing[0][2]放在单独的列表中并附加它。如果listing[0]的大小为4 listing[0]search[0][0]中存在search[0][1],我仍会将listing[0]添加到新列表中。我该怎么办?

感谢。

1 个答案:

答案 0 :(得分:1)

[lst for lst in listing if all([True if term in lst else False for term in search[0]])]

结果:[['tl.48', 'tl.49', 'tl.57']]

对于list中的每个listing,检查每个搜索字词in list是否为all,只有在search[0]此类字词存在时才附加

注意:搜索是包含单个列表的列表,这就是我们使用search的原因。如果它只是元素列表,请改用result = [] for lst in listing: valid = True for term in search[0]: if term not in lst: valid = False if valid: result.append(lst)

大致相当于(相同的结果,不同的方法):

search

如果这是真正的列表比较(其中listing#include<stdio.h> #include<stdlib.h> int main(){ float x; x=4/(4-1); printf("%f\n", x); } 都是列表列表),您需要找到更强大的解决方案。