IT

파이썬에서 튜플 비교는 어떻게 작동합니까?

lottoking 2020. 6. 21. 19:10
반응형

파이썬에서 튜플 비교는 어떻게 작동합니까?


저는 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

반응형