我想比较此列表中的所有项目:
l = [(True, False, True), (False, True, True), (False, False, True),
(True, False, False), (False, False, False), (True, True, False),
(False, True, False)]
我想保留与所有其他元素相比始终满足以下条件的所有元素:
a 和 b 相同,或者
a 为真
例如:
# True, True, True
a --> (True, False, True)
b --> (True, False, False)
第一个为 true,因为第一个元素相同;第二个为 true,因为第二个值相同;第三个为 true,因为 为atrue。这些元组的比较应该返回 true。
所以我有这个代码:
to_keep = []
for i in range(len(l)):
if all([map(lambda x, y: x == y or x, l[i], l[s]) for s in range(len(l))]):
to_keep.append(l[i])
print(to_keep)
对于 中的每个项目l,如果每次比较都返回 true,则将此元素附加到to_keep。
问题是,由于某种神秘的原因,它总是评估为 true,因此所有元素都被添加到to_keep.
[(True, False, True), (False, True, True), (False, False, True),
(True, False, False), (False, False, False), (True, True, False),
(False, True, False)]
谁能解释/纠正我的错误?
Smart猫小萌
相关分类