Skip to main content
 首页 » 编程设计

python之无法使用列表理解从元组列表中删除元组

2025年05月04日11kenshinobiy

我有一个元组列表,我想从这个列表中删除一个元素。我不想使用 remove() 方法,因为列表不是唯一的,我想删除与给定元组匹配的所有元素。

那么,为什么下面的代码不删除 (21, 187) 元素?

edgeList = [(1, 2), (3, 75), (21, 187), (2, 6)] 
edgeList = [(e1, e2) for e1, e2 in edgeList if (e1 != 21 & e2 != 187)] 
print(edgeList) 

上面的代码会打印:

[(1, 2), (3, 75), (21, 187), (2, 6)] 

为什么元组 (21, 187) 仍然存在?

请您参考如下方法:

你正在使用位运算符&,你想使用and:

edgeList = [(e1,e2) for e1,e2 in edgeList if (e1!=21 and e2!=187)] 

问题是 & 的优先级与 and 不同,所以你最终会做 e1 != (21 & e2) != 187