比较两个列表并打印出不相等的元素

时间:2013-07-12 21:37:17

标签: python list equality

我有以下格式的两个列表:

list1 = ['A','B','C','D']
list2 = [('A',1),('B',2),('C',3)]

我想比较两个列表并打印出第三个列表,这些列表将包含list1中但不在list2中的那些元素,我想仅比较list2 [i] [0]元素。

我尝试了以下代码:

fin = [i for i in list1 if i not in list2]

但它会打印list1中的所有元素。我希望上面案例中的输出为:

fin = ['D']

有人可以建议怎么做吗? 另外,我不想将我的2D数组list2转换为1D数组。

3 个答案:

答案 0 :(得分:6)

使用设定差异。

set(list1) - set(i[0] for i in list2)

答案 1 :(得分:2)

你也可以这样做(你需要将我与list2中每个元组的第一个元素进行比较):

fin = [i for i in list1 if i not in map(lambda(x,_):x,list2)]

答案 2 :(得分:1)

嵌套理解如何:

fin = [a for a in list1 if a not in [b for b,_ in list2]]