2012-02-16 2 views
4

아래 코드에서 요소를 정렬하기 위해 작성된 간단한 알고리즘입니다. 내 질문은 내부적으로 문자열을 비교하는 방법과 해석기가이 문자열이 정수python은 문자열과 정수를 어떻게 비교합니까

a=[22, 66, 54, 11, 16, 2, 5, 'b', 'a', 3, 2, 1] 
>>> for i in range(len(a)-1): 
... for j in range(len(a)-i-1): 
...  if a[j] > a[j+1]: 
...   a[j],a[j+1]=a[j+1],a[j] 
... 
>>> print a 
[1, 2, 2, 3, 5, 11, 16, 22, 54, 66, 'a', 'b'] 
+0

의 중복 가능성 [파이썬 문자열을 비교하고 int로 않습니다 어떻게?] (http://stackoverflow.com/questions/3270680/how-does-python-compare-string-and-int) – jcollado

답변

3

2.x에서는 두 객체를 공통 유형으로 강제 변환 할 수없는 경우 클래스 이름을 비교합니다. "str"> "int", 그래서 그들은 온다.

3.x에서 두 객체를 공통 유형으로 강제 변환 할 수없는 경우 예외가 발생합니다.

+0

"str"> "int"???? – Rajeev

2

임의.

다른 숫자 유형과 다른 문자열 유형을 제외하고는 서로 다른 유형의 객체는 결코 동일하지 않습니다. 그러한 객체는 일관되게하지만 임의적으로 정렬됩니다 (따라서 이질적인 배열을 정렬하면 일관된 결과를 얻을 수 있습니다). 또한 일부 유형 (예 : 파일 오브젝트)은 해당 유형의 두 오브젝트가 동일하지 않은 비교의 축약적인 개념만을 지원합니다. 다시, 이러한 객체는 임의로 정렬되지만 일관되게입니다. <, < =,> 및> = 연산자는 피연산자가 복소수 일 때 TypeError 예외를 발생시킵니다. Built-In Types (Python.org)에서

관련 문제