이것이 내가하는 일이라고 생각합니까? 그렇습니다. 나는 확신하도록 요구하고있다.세 값의 평등 테스트
if n[i] == n[i+1] == n[i+2]:
return True
동일합니까? 액세스 번만 수행되므로
if n[i] == n[i+1] and n[i+1] == n[i+2]:
return True
이것이 내가하는 일이라고 생각합니까? 그렇습니다. 나는 확신하도록 요구하고있다.세 값의 평등 테스트
if n[i] == n[i+1] == n[i+2]:
return True
동일합니까? 액세스 번만 수행되므로
if n[i] == n[i+1] and n[i+1] == n[i+2]:
return True
그것은, 등가뿐만 같지 않다. 파이썬은 관계 연산자를 자연스럽게 연결합니다 (in
및 is
포함).
약간의 차이를 보여줄 수있는 가장 쉬운 방법 :
>>> print(1) == print(2) == print(3)
1
2
3
True
>>> print(1) == print(2) and print(2) == print(3)
1
2
2
3
True
문제를 해결할 수 있기 때문에 동일한 것은 아닙니다. 시나리오가 작동하고 다른 시나리오가 실패하는 시나리오 ('n'은 액세스 후에 n [i + 1]의 값을 변경하는 객체 임). 편집 : 나는 그 차이를 보여주는 예를 편집했다. –
예 ....
당신이 또한 올바른 할 수 있습니다5 > x > 1
또는
1 < x < 5
그렇습니다. 그러나 비교 ns는 공통 표현에 연결되면 and
을 두 번 평가하면 한 번 평가됩니다. 두 경우 모두에서, 제 2 비교는 제 한으로부터 실시 예 거짓인지를 평가하지 않은 docs :
비교는 < = Z가 동일하다 Y 예 <를 X, 임의로 사슬 수 에 X < Y 및 Y < = z. 단, y는 한 번만 계산됩니다 (단, 의 경우 x < y가 거짓 일 때 z가 평가되지 않습니다).
는
네, 파이썬의 내부에 진실도 거짓도 비교 연산자의 반환, 그들은 대신에 (그것은 아주 과거에 있었다, 클래스 이름을 기억할 수없는)이 '비교 결과'개체를 반환하고,이 객체는 을 제공합니다 _ _, _ 된다 _, _ 당량 _ 등 등 방법 및 최종 결과에 대한 '책임'가 (그리고 '비교 결과'LT의 단부에 참 또는 거짓으로 캐스팅 성명서). 그것은 의미 제어 파이썬이 여러분에게 제공하는 마법입니다 :
맞습니다. –
다음 중 중복 된 항목 : http://stackoverflow.com/questions/13792604/usage-of-the-operator-for-three-objects/13792615#13792615 –