0

コードが事前定義されたリストからリストを除外しない理由がわかりません。次のコードを使用して特定のリストを削除しようとしています。

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

5 に答える 5

3

and間違っている、使用or

data = [x for x in data if x[0] != 1 or x[1] != 1]
于 2012-10-26T22:35:27.283 に答える
2

and両側が真の値である場合にのみ真です。たぶんあなたが欲しい...

data = [x for x in data if x[0] != 1 or x[1] != 1]
于 2012-10-26T22:35:43.237 に答える
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
于 2012-10-26T22:45:30.250 に答える
0

小さな論理エラーが発生しました。問題の考え方に合わせるには、次を使用します。

if not (x[0] == 1 and x[1] == 1)

or他の人が示唆したように、これは論理的に使用することと同等であることに注意してください。

not (A and B) == (not A) or (not B) 
于 2012-10-26T22:57:47.793 に答える
0

コードでは、「and」の代わりに「or」を使用する必要があります。また、「and」は、uが両方の値を実行する場合に使用されます。例:

data = [x for x in data if x[0] != 1 or x[1] != 1]
于 2021-10-22T16:44:02.100 に答える