2016-12-11 13 views
-1

比較3つの配列

def isItATriple(first,second,third): 
if first[0] == second[0] == third[0] or first[0] != second[0] != third[0]: 
    if first[1] == second[1] == third[1] or first[1] !=second[1] != third[1]: 
     if first[2] == second[2] == third[2] or first[2] != second[2] != third[2]: 
      if (first[3] == second[3] == third[3]) or (first[3] != second[3] != third[3]): 
       return True 
      else: 
       return False 
     else: 
      return False 
    else: 
     return False 
else: 
    return False 

print(isItATriple([0,0,0,0],[0,0,0,1],[0,0,0,0])) 
+0

'(最初の[3]!= 2番目の[3]!= 3番目の[3])' ==> '(最初の[3]!= 2番目の[3] ...)' && [3]!= 3 [3])。 –

答えて

1

分析してみましょう:

最初の場合:

if first[0] == second[0] == third[0] or \ 
     first[0] != second[0] != third[0]: 

最初の(beforeまたは)はTrueです.0インデックスではすべてのリストに0が含まれているため、最初です。 もしそうなら、条件が満たされていない、またはチェックされていない(Pythonが遅延しているため)True or AnythingはTrueを返します。

第場合:上記のように

if first[1] == second[1] == third[1] or \ 
      first[1] !=second[1] != third[1]: 

全く同じ - 各リストの1つの要素が等しい - それはここで本当。

もし第三:

if first[2] == second[2] == third[2] \ 
       or first[2] != second[2] != third[2]: 

同じ。一般的には真です。

第四の場合:

if first[3] == second[3] == third[3] or \ 
        first[3] != second[3] != third[3]: 

そしてここで - 第一の条件(前か)がFalseであり、第二は真です。だからこそ、あなたのメソッドはTrueを返します。言い換えれば

0 != 1 != 0 

この平均:

0 != 1 and 1 != 0 

そして最後に:

True # because 0 is different than 1; 

あなたが演算子を使用する一般的なケースですが

第2の条件はに評価されますこのように:

1 < x < 10 

この平均:

1 < x and x < 10 

しかし、正直に言うと - このコードはかなり醜いです:)

私はあなたがnicelyこの多くを行うことができますどのようにお見せしましょう。

def myIsATriple(first, second, third): 
    return first == second == third 

あなたはそれを手動で行う必要はありませんので、比較は:) Pythonでかなりうまく機能リスト、例:

myIsATriple([0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 0]) # False 
myIsATriple([0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]) # True 
myIsATriple([0, 'a', 0, 0], [0, 'a', 0, 0], [0, 'b', 0, 0]) # False 
myIsATriple([0, 'a', 1, 0], [0, 'a', 1, 0], [0, 'a', 1, 0]) # True 
myIsATriple([0, {'a': 2}, 1, 0], [0, {'a': 2}, 1, 0], [0, {'a': 3}, 1, 0]) # False 
myIsATriple([0, {'a': 2}, 1, 0], [0, {'a': 2}, 1, 0], [0, {'a': 2}, 1, 0]) # True 

コーディングハッピー!