[英]How to remove certain lists from a list of lists using python?
我不明白为什么我的代码没有从预定义的列表中过滤掉列表。 我正在尝试使用以下代码删除特定列表。
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]]
and
是错误的,请使用or
data = [x for x in data if x[0] != 1 or x[1] != 1]
and
仅在双方均为真值时才为真。 也许你想要...
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
您有一个小逻辑错误。 要匹配您对问题的思考方式,请使用:
if not (x[0] == 1 and x[1] == 1)
请注意,从逻辑上讲,这等效于使用or
,就像其他人建议的那样:
not (A and B) == (not A) or (not B)
在您的代码中,“或”应该用于代替“和”。 如果你想同时执行这两个值,就使用“and”。所以代码应该像 data = [x for x in data if x[0] != 1 or x[1] != 1]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.