【发布时间】:2014-07-20 18:35:20
【问题描述】:
我有两个列表:
l1=[[12,3,C,-],[10,2,A,-]]
l2=[[8,3,X,W],[15,2,Y,W],[16,2,X,W],[17,3,V,W],[20,2,Z,W],[21,1,V,W].......]
现在我想比较这两个列表并将 l2 中不匹配的部分提取到新列表中。我的意思是说它应该将 l1[1] 与字段 l2[1] 匹配并返回不匹配的列表。 匹配意味着当 l1 的子列表的第二个位置的元素与 l2 的子列表中的相同位置进行比较时,它应该被忽略,并且必须返回任何不匹配的元素。实际上,我必须遍历两个列表才能获得比较元素。例如3,2 在 l1 中,经过比较,它应该返回具有第二个位置元素 1 的子列表。 这是我的方法:
l3=[x for x in l2 if x[1] not in l1[1]]
但即使是匹配的部分,它也会返回给我。它有什么问题?
【问题讨论】:
-
不清楚你所说的“匹配”是什么意思。还有,为什么
l1是一个列表列表,而您只使用它的第一个元素(使第二个元素无关紧要)。 -
匹配意味着当 l1 的子列表的第二个位置的元素与 l2 的子列表中的相同位置相比时,它应该被忽略并且必须返回任何不匹配的元素。实际上,我必须遍历两个列表才能获得比较元素。例如l1 中的 3,2 并且经过比较它应该返回具有第二个位置元素 1 的子列表。现在够清楚了吗??
-
考虑改进您的问题以明确这一点。此外,具有预期输出的示例输入将非常有帮助。