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

标签 python 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)

最佳答案

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

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)

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

关于Python 2.7 - 检查单元素元组列表中的双元素元组中的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14237789/

相关文章:

python - 为什么 Parsimonious 以 IncompleteParseError 拒绝我的输入?

python - exec/eval 的替代方案?

python - 无法使用 python 将 UDP 数据包发送到本地端口,根据 WireShark 校验和失败

python - Scipy 在 Julia 中使用 PyCall

Python递归函数

python - OpenCV/Python:彩条的数量级

python - 如何检查网上邻居目录中是否存在文件

python-2.7 - PYTHON 2.7 - 修改列表列表并重新组装而不改变

Python:如何在不反转原始字典的情况下反转新字典中的列表

python - SimpleHTTPServer 和 SocketServer