我有以下格式的两个列表:
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数组。
答案 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]]