답변:
튜플은 위치별로 비교된다 : 제 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 : /programming/36911617/python-2-tuple-comparison 질문 참조 : 첫 번째 요소가 해당 요소보다 큰 경우에만 튜플이 다른 것보다 "더 크다"고 생각하지 마십시오 두 번째에서 하나.
x = tuple([0 for _ in range(n)])
y에 대해서도 동일하게 수행하십시오. n = 100, 1000, 10,000 및 100,000으로 설정하고 running %timeit x==y
은 각각 0.5, 4.6, 43.9 및 443 마이크로 초의 타이밍 값을 제공했는데, 이는 실제로 얻을 수있는 O (n)에 가깝습니다.
<
및 >
않는다는 의미는 없다 "작은 다음"과 "더는"하지만 "앞에 오는"와 "다음에 오는"그래서 (0, 1)
"전에 온다"(1, 0)
파이썬 2.5 문서는 잘 설명합니다.
튜플과리스트는 해당 요소의 비교를 사용하여 사전 식으로 비교됩니다. 즉, 동일하게 비교하려면 각 요소가 동일하게 비교되어야하고 두 시퀀스의 유형이 동일하고 길이가 같아야합니다.
동일하지 않은 경우 시퀀스는 첫 번째 다른 요소와 동일하게 정렬됩니다. 예를 들어 cmp ([1,2, x], [1,2, y])는 cmp (x, y)와 동일을 반환합니다. 해당 요소가 존재하지 않으면 더 짧은 시퀀스가 먼저 정렬됩니다 (예 : [1,2] <[1,2,3]).
불행히도 최신 버전의 설명서에서 해당 페이지가 사라진 것 같습니다.
a = ('A','B','C') # see it as the string "ABC"
b = ('A','B','D')
A는 해당 ASCII로 변환됩니다 ord('A') #65
다른 요소와 동일한
따라서
>> a>b # True
문자열을 비교하는 것으로 생각할 수 있습니다 (실제로 정확합니다)
정수도 마찬가지입니다.
x = (1,2,2) # see it the string "123"
y = (1,2,3)
x > y # False
왜냐하면 (1은 1보다 크지 않고, 다음으로 이동하고, 2는 2보다 크지 않고, 다음 2로 이동하면 3보다 작습니다-)
요점은 위의 답변에 언급되어 있습니다.
요소가 알파벳순이 아닌 다른 요소보다 앞에 있다고 생각하십시오.
(1,2,3) > (1,2,2)
제공True
<
및>
. 예를 들어로(0, 1) < (1, 0)
평가됩니다True
.