Python 如何将嵌套列表与列表匹配

Python 如何将嵌套列表与列表匹配,python,list,match,nested-lists,Python,List,Match,Nested Lists,问题是我试图比较嵌套列表和没有相同值或元素的列表 lst3 = [1, 6, 7, 10, 13, 28] lst4 = [[13, 17, 18, 21, 32], [7, 11, 13, 14, 28], [1, 5, 6, 8, 15, 16]] lst5 = [list(filter(lambda x: x not in lst3, sublist)) for sublist in lst4] 返回: [[17, 18, 21, 32], [11, 14], [5, 8, 15,

问题是我试图比较嵌套列表和没有相同值或元素的列表

lst3 = [1, 6, 7, 10, 13, 28]
lst4 = [[13, 17, 18, 21, 32], [7, 11, 13, 14, 28], [1, 5, 6, 8, 15, 16]] 

lst5 = [list(filter(lambda x: x not in lst3, sublist)) for sublist in lst4]
返回:

[[17, 18, 21, 32], [11, 14], [5, 8, 15, 16]]
但我想从l3得到不匹配的号码。这里有一个例子:

[[1,6,7,10,28],[1,6,10],[1,7,13,28]]
我希望结果是:
[[1,6,7,10,28],[1,6,10],[1,7,13,28]
在您的示例中,您将每个
子列表中的每个元素与
lst3
进行比较

lst5=[lst4中的子列表的列表(过滤器(lambda x:x不在lst3中,子列表))

问题是,您正在询问来自
子列表的每个
x
是否不在
lst3
中,这将为您提供来自
子列表的剩余结果。你可能想用另一种方式来做

lst5=[lst4中的子列表的列表(过滤器(lambda x:x不在子列表中,lst3)]]

它不仅给了你想要的答案,而且我甚至注意到你在预期结果中犯了一个错误:

[1,6,7,10,28],[1,6,10],[7,10,13,28]]

与你的相比:

[1,6,7,10,28],[1,6,10],[1,7,13,28]]

(请参见最后一个嵌套数组)

在线示例:

与使用
过滤器和
lambda
之类的工具相比,您可以更容易地使用列表理解:

lst5 = [[x for x in lst3 if not x in sublist] for sublist in lst4]
那是

[[1, 6, 7, 10, 28], [1, 6, 10], [7, 10, 13, 28]]

这与您给出的预期输出略有不同,但我认为您在该预期输出的第三个子列表中犯了一个印刷错误。

我接受约翰·科尔曼的答案,但为了可读性,调整了词序


lst5=[[x表示lst3中的x,如果x不在子列表中]表示lst4中的子列表]

我有两个列表,它们是至少有100行的二维列表。我想将c1与c2匹配,反之亦然。但真正的问题不是从c1中逐行输入以匹配c2。是否有一种更快的方法循环遍历c1中的所有行以匹配c2中的所有行

我试过c1[0]和c1[1]以及c1[2]。这个方法可以工作,但我必须一行一行地输入大量内容。这将是大量的打字,尤其是如果它有很多行

这里我有两个列表,它们是二维列表

c1=[[2,6,7],[2,4,6],[3,6,8]

c2=[[13,17,18],[7,11,13],[5,6,8]


[列表(筛选器(c3中的lambda x:x,子列表))用于c2中的子列表]。

请将该语言添加为标记。这确实有效,谢谢。那么区别在于括号?不,在你的预期结果中,你写了1而不是10。(如果你指的是这个)这个方法也有效。你知道如何匹配两个二维列表吗?@Sofreshnclean“匹配两个二维列表”的含义不太清楚。你也许可以接受这个问题的其中一个答案,然后问一个新问题,重点是修改后的问题。一个问题的答案与一个新问题不同。为什么不直接问一个新问题呢?