2013-01-09 205 views
1

第一次張貼海報。我有兩個元組列表。Python 2.7 - 檢查單元元組列表中的兩元素元組中的第一個元素

第一列表具有與兩個元素的元組:

list_a = [('a','apple'), ('b','banana'), ('c','cherry')] 

第二列表具有元組只有一個元素:

list_b = [('d',), ('e',), ('a',)] 

我需要刪除在list_a元組,其中所述第一元件該元組包含在list_b中。因此,目標是list_a呈現:

list_a = [('b','banana'), ('c','cherry')] 

我已經試過:

for la in list_a: 
    if la[0] in list_b: 
     list_a.remove(la) 

在此先感謝您的幫助。

回答

8

您不能從正在循環的列表中刪除元素。使用列表理解來代替:

list_a = [la for la in list_a if la[:1] not in list_b] 

請注意,我們的測試la[:1]使用(單件)來測試元組; la[0]只是單個字符的字符串。

如果你不得不經常這樣做,可以考慮使用一組list_b代替:

set_b = set(list_b) 

查找一組需要一定的時間,對線性時間的列表成員資格測試。

+2

[列表解析]的快速說明(http://www.youtube.com/watch?v=pShL9DCSIUw)。 –

+0

這是我的解決方案。非常感謝。 – JMcClure

相關問題