다음 기능이 필요합니다.
입력 :list
출력 :
True
입력 목록의 모든 요소가 표준 항등 연산자를 사용하여 서로 같은 것으로 평가되는 경우;False
그렇지 않으면.
공연 : 물론 불필요한 오버 헤드가 발생하지 않는 것을 선호합니다.
나는 그것이 최선일 것이라고 생각한다.
- 목록을 반복
- 인접한 요소를 비교
- 그리고
AND
모든 결과 부울 값
그러나 가장 파이썬적인 방법이 무엇인지 잘 모르겠습니다.
단락 기능이 없으면 초기 요소가 같지 않은 긴 입력 (~ 50 개 이상의 요소)에 대해서만 문제가됩니다. 이 문제가 자주 발생하는 경우 (목록의 길이에 따라 다름) 단락이 필요합니다. 최고의 단락 알고리즘은 @KennyTM 인 것 같습니다 checkEqual1
. 그러나 이것에 대한 상당한 비용을 지불합니다.
- 거의 동일한 성능의 목록에서 최대 20 배
- 짧은 목록에서 최대 2.5 배 성능
초기에 같지 않은 요소를 가진 긴 입력이 발생하지 않거나 충분히 드물게 발생하는 경우 단락이 필요하지 않습니다. 그런 다음 @Ivo van der Wijk 솔루션이 가장 빠릅니다.
functools.reduce(operator.eq, a)
제안되지 않은 것에 놀랐습니다 .
a == b
또는 같은 동일a is b
?