0
>>> l=[(i,j,k) for i in {-4,-2,1,2,5,0} for j in {-4,-2,1,2,5,0} for k in {-4,-2,1,2,5,0} if i+j+k==0 if i==0 & j==0 & k==0]
>>> l
[(0, 0, 0), (0, 2, -2), (0, -2, 2)]

上記の Python 3 コードは、i+j+k=0 ですべての要素が 0 であるトリプル (i,j,k) を見つけます。したがって、答えは (0,0,0) になるはずです。

しかし、答えは [(0, 0, 0), (0, 2, -2), (0, -2, 2)] でした。

少し検索した後、問題はの&代わりにの使用にあるandことがわかりました。これandは論理演算子で&あり、ビット単位の演算子であることを理解しています。

しかし、 を使用して得た答えが得られた理由がわかりません&

Python3は等価チェック操作をどのように処理しますか?

4

2 に答える 2