Skip to main content
 首页 » 编程设计

Python 2.7之检查单元素元组列表中的双元素元组中的第一个元素

2025年05月04日14yjmyzz

我有两个元组列表。

第一个列表有两个元素的元组:

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) 

请您参考如下方法:

您不能从正在循环的列表中删除元素。改用列表理解:

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) 

与列表成员测试的线性时间相比,集合中的查找需要常数时间。