分析してみましょう:
最初の場合:
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
コーディングハッピー!
'(最初の[3]!= 2番目の[3]!= 3番目の[3])' ==> '(最初の[3]!= 2番目の[3] ...)' && [3]!= 3 [3])。 –