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

Python 比较两个列表并打印出不相等的元素,python,list,equality,Python,List,Equality,我有以下格式的两个列表: list1 = ['A','B','C','D'] list2 = [('A',1),('B',2),('C',3)] 我想比较这两个列表并打印出第三个列表,该列表中的元素将出现在列表1中,但不出现在列表2中,我只想比较列表2[I][0]元素 我尝试了以下代码: fin = [i for i in list1 if i not in list2] 但它会打印列表1中的所有元素。我希望上述情况下的输出为: fin = ['D'] 有人能建议怎么做吗? 另外,我不想将

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

list1 = ['A','B','C','D']
list2 = [('A',1),('B',2),('C',3)]
我想比较这两个列表并打印出第三个列表,该列表中的元素将出现在列表1中,但不出现在列表2中,我只想比较列表2[I][0]元素

我尝试了以下代码:

fin = [i for i in list1 if i not in list2]
但它会打印列表1中的所有元素。我希望上述情况下的输出为:

fin = ['D']
有人能建议怎么做吗?
另外,我不想将2D数组列表2转换为1D数组

使用设置的差异

set(list1) - set(i[0] for i in list2)
您也可以这样做(您需要将i与列表2中每个元组的第一个元素进行比较):


嵌套理解如何:

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

每个列表中的项目是否已排序?是的,只应比较每个列表中相应的元素
fin = [a for a in list1 if a not in [b for b,_ in list2]]