파이썬에서 튜플 비교는 어떻게 작동합니까?
저는 Core Python 프로그래밍 책을 읽었으며 저자는 다음과 같은 예를 보여줍니다.
(4, 5) < (3, 5) # Equals false
그래서, 나는 그것이 어떻게 / 왜 거짓과 같은지 궁금합니다. 파이썬은이 두 튜플을 어떻게 비교합니까?
Btw, 그것은 책에서 설명되지 않았습니다.
튜플은 위치별로 비교된다 : 제 1 튜플의 제 1 항목은 제 2 튜플의 제 1 항목과 비교되고; 이들이 동일하지 않으면 (즉, 첫 번째가 두 번째보다 크거나 작 으면) 비교 결과입니다. 그렇지 않으면 두 번째 항목이 고려되고 세 번째 등이 고려됩니다.
일반적인 시퀀스 작업을 참조하십시오 .
동일한 유형의 시퀀스도 비교를 지원합니다. 특히 튜플과리스트는 해당 요소를 비교하여 사전 식으로 비교됩니다. 즉, 동일하게 비교하려면 모든 요소가 동일하게 비교되어야하고 두 시퀀스의 유형이 동일하고 길이가 같아야합니다.
또한 값 비교 자세한 내용은 :
내장 컬렉션 사이의 사전 비교는 다음과 같이 작동합니다.
- 두 컬렉션이 동일하게 비교 되려면 동일한 유형이어야하고 길이가 동일해야하며 각 해당 요소 쌍이 동일하게 비교되어야합니다 (예 :
[1,2] == (1,2)
유형이 같지 않기 때문에 false 임).- 주문 비교를 지원하는 컬렉션은 첫 번째 같지 않은 요소와 동일하게 정렬됩니다 (예 :
[1,2,x] <= [1,2,y]
와 같은 값을 가짐x <= y
). 해당 요소가 존재하지 않으면 더 짧은 콜렉션이 먼저 주문됩니다 (예[1,2] < [1,2,3]
: true).
동일하지 않은 경우 순서는 첫 번째 다른 요소와 동일하게 정렬됩니다. 예를 들어 cmp ([1,2, x], [1,2, y])는 cmp (x, y)와 동일을 반환합니다. 해당 요소가 존재하지 않으면 짧은 시퀀스가 더 작은 것으로 간주됩니다 (예 : [1,2] <[1,2,3]은 True를 반환 함).
주 1 : <
및 >
하지 평균과 "이상" "보다 작은"하지만 "이전 인"과 "이후"그래서 (0, 1) "전입니다"(1, 0).
참고 2 : 튜플은 길이에 따라 n 차원 공간에서 벡터 로 간주해서는 안됩니다 .
참고 3 : https://stackoverflow.com/questions/36911617/python-2-tuple-comparison 질문 참조 : 첫 번째 요소가 해당 요소보다 큰 경우에만 튜플이 다른 것보다 "더 크다"고 생각하지 마십시오 두 번째에서 하나.
파이썬 문서는 그것을 설명한다.
튜플과리스트는 해당 요소의 비교를 사용하여 사전 식으로 비교됩니다. 즉, 동일하게 비교하려면 각 요소가 동일하게 비교되어야하고 두 시퀀스의 유형이 동일하고 길이가 같아야합니다.
튜플 비교
파이썬의 비교 연산자는 튜플을 사용할 수 있습니다. 비교는 각 튜플의 첫 번째 요소로 시작합니다. 그들은 비교하지 않는 경우 =
, <
또는 >
그것은 두 번째 요소 등으로 진행합니다.
이를 예로 들어 봅시다 :
#case 1
a=(5,6)
b=(1,4)
if (a>b):print("a is bigger")
else: print("b is bigger")
#case 2
a=(5,6)
b=(5,4)
if (a>b):print("a is bigger")
else: print ("b is bigger")
#case 3
a=(5,6)
b=(6,4)
if (a>b):print("a is bigger")
else: print("b is bigger")
사례 1 :
비교는 각 튜플의 첫 번째 요소로 시작합니다. 이 경우 5> 1이므로 출력 a가 더 큽니다.
사례 2 :
비교는 각 튜플의 첫 번째 요소로 시작합니다. 이 경우 결정적이지 않은 5> 5입니다. 다음 요소로 넘어갑니다. 6> 4, 출력 a가 더 큼
사례 3 :
비교는 각 튜플의 첫 번째 요소로 시작합니다. 이 경우 5> 6이며 이는 거짓입니다. 따라서 "b는 더 큽니다"라는 else 루프 프린트로 들어갑니다.
결론:
튜플은 항상 첫 번째 인덱스를 비교하고 프로그램에 따라 출력을 제공합니다. 모든 요소를 비교하지는 않습니다.
정수 비교와 관련하여 약간의 혼란이 있었으므로 예제에 더 익숙한 것으로 설명하겠습니다.
a = ('A','B','C') # see it as the string "ABC" b = ('A','B','D')
A는 ord('A') #65
다른 요소와 동일한 ASCII로 변환됩니다.
따라서 >> a>b # True
문자열을 비교하는 것으로 생각할 수 있습니다 (실제로 정확합니다)
정수도 마찬가지입니다.
x = (1,2,3) # see it the string "123" y = (1,2,2) x > y # False
(1은 1보다 크지 않고, 다음으로 이동하고, 2는 2보다 크지 않고, 다음 2로 이동하면 3보다 작습니다-)
요점은 위의 답변에 언급되어 있습니다.
요소가 알파벳순이 아닌 다른 요소보다 앞에 있다고 생각하십시오. 요소보다 요소가 크지 않으며이 경우 모든 튜플 요소를 하나의 문자열로 간주하십시오.
참고 URL : https://stackoverflow.com/questions/5292303/how-does-tuple-comparison-work-in-python
'IT' 카테고리의 다른 글
새로운 iPhone 6 및 6+의 이미지 해상도, @ 3x 지원 추가? (0) | 2020.06.21 |
---|---|
Java 8에서 Functional Interface의 사용법은 무엇입니까? (0) | 2020.06.21 |
TargetedPatchingOptOut : "NGen 이미지 경계를 가로 질러 인라인하는 데 중요한 성능"? (0) | 2020.06.21 |
클릭 가능한 ImageView와 ImageButton의 차이점 (0) | 2020.06.21 |
gitignore 제외 규칙은 실제로 어떻게 작동합니까? (0) | 2020.06.21 |