我无法弄清楚为什么我的代码不会从预定义列表中筛选出列表。 我试图使用以下代码删除特定列表。
data = [[1,1,1],[1,1,2],[1,2,1],[1,2,2],[2,1,1],[2,1,2],[2,2,1],[2,2,2]]
data = [x for x in data if x[0] != 1 and x[1] != 1]
print data
我的结果:
data = [[2, 2, 1], [2, 2, 2]]
预期结果:
data = [[1,2,1],[1,2,2],[2,1,1],[2,1,2],[2,2,1],[2,2,2]]
答案 0 :(得分:3)
and
错误,请使用or
data = [x for x in data if x[0] != 1 or x[1] != 1]
答案 1 :(得分:2)
and
只有双方都是真正的价值观才是真的。也许你想要......
data = [x for x in data if x[0] != 1 or x[1] != 1]
答案 2 :(得分:0)
我认为这是OP想要的。
data = [[1,1,1],[1,1,2],[1,2,1],[1,2,2],[2,1,1],[2,1,2],[2,2,1],[2,2,2]]
data = [x for x in data if x[:2] != [1,1]]
print data
data = [x for x in data if ((x[0],x[1]) != (1,1))]
print data
答案 3 :(得分:0)
你的逻辑错误很小。要匹配您考虑问题的方式,请使用:
if not (x[0] == 1 and x[1] == 1)
请注意,这在逻辑上等同于使用or
,正如其他人建议的那样:
not (A and B) == (not A) or (not B)