2013-07-12 112 views
2

我有以下格式兩個列表:比較兩個列表,並打印出不平等的元素

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

我想比較這兩個列表,並打印出的第三列表,它會出現在列表1,但不是這些要素在list2中,我只想比較list2 [i] [0]元素。

我嘗試下面的代碼:

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

但它打印列表1中的所有元素。我想在上面的情況下輸出爲:

fin = ['D'] 

請問有人可以建議如何做到這一點? 此外,我不想將我的二維數組list2轉換爲一維數組。

+0

是每個列表中的項目排序? –

+0

是的,只有每個列表中的相應元素應該進行比較 –

回答

6

使用設置的差異。

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

你可以做到這一點,以及(你需要我在list2中每個元組的第一個元素比較):

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

如何嵌套的內涵:

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

這很好。謝謝 :) –

相關問題