我有一个元组列表,我想从这个列表中删除一个元素。我不想使用 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
