繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM