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

如何使用python从列表列表中删除某些列表?,python,list,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]

我不明白为什么我的代码没有从预定义列表中过滤出列表。 我正在尝试使用以下代码删除特定列表

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

错误,请使用

data = [x for x in data if x[0] != 1 or x[1] != 1]

错误,请使用

data = [x for x in data if x[0] != 1 or x[1] != 1]

只有当两边都是真值时,
才为真。也许你想要

data = [x for x in data if x[0] != 1 or x[1] != 1]

只有当两边都是真值时,
才为真。也许你想要

data = [x for x in data if x[0] != 1 or x[1] != 1]

我想这就是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

我想这就是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

你有一个小的逻辑错误。要符合您对问题的思考方式,请使用:

if not (x[0] == 1 and x[1] == 1)
注意,这在逻辑上等同于使用
,正如其他人所建议的:

not (A and B) == (not A) or (not B) 

你有一个小的逻辑错误。要符合您对问题的思考方式,请使用:

if not (x[0] == 1 and x[1] == 1)
注意,这在逻辑上等同于使用
,正如其他人所建议的:

not (A and B) == (not A) or (not B) 

[1,2,1]
中,
x[0]==1
会自动取消其资格。以此类推……为了符合您对问题的思考方式,请使用:
如果不是(x[0]==1和x[1]==1)
不客气。注意,它在逻辑上等同于使用
,正如其他人所建议的那样:因为
不是(A和B)
=
(不是A)或(不是B)
把上面的问题变成了一个答案,如果你想接受的话……在
[1,2,1]
中,
x[0]==1
中,它会自动取消它的资格。以此类推……为了符合您对问题的思考方式,请使用:
如果不是(x[0]==1和x[1]==1)
不客气。注意,它在逻辑上等同于使用
,正如其他人所建议的那样:因为
不是(A和B)
=
(不是A)或(不是B)
把上面的问题变成了一个答案,如果你想接受它的话……也不错!但如果我想用列表的第1个和第3个值来过滤,那么这个方法的适应性就不太好了。第二个解决方案怎么样?也不错!但如果我想用列表的第1个和第3个值来过滤,这个方法的适应性就不太好了。第二个解决方案怎么样。