如何使用python从列表列表中删除某些列表?

时间:2012-10-26 22:33:21

标签: python list

我无法弄清楚为什么我的代码不会从预定义列表中筛选出列表。 我试图使用以下代码删除特定列表。

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]]

4 个答案:

答案 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)