2013-01-09 61 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

相关问题