문서는 것을 보증하지 않습니다. 문서화 된 다른 장소가 있습니까?
목록의 정렬 방법이 안정적이라는 것이 보장되고 (참고 9 번째 포인트 : “Python 2.3부터는 sort () 방법이 안정적으로 보장됩니다.”) 정렬이 기능적으로 유사하기 때문에 안정적 일 수 있다고 생각합니다. 그러나 나는 그렇게 말하는 확실한 출처를 찾을 수 없습니다.
목적 : 두 레코드에서 기본 키가 동일한 경우 기본 키와 보조 키를 기준으로 정렬해야합니다. sorted ()가 안정적이라면 보조 키를 정렬 한 다음 기본 키를 정렬하여 필요한 결과를 얻을 수 있습니다.
추신 : 혼동을 피하기 위해, “동일하게 비교되는 요소의 상대적 순서를 변경하지 않는 것이 보장된다면 일종의 안정적입니다”라는 의미에서 stable을 사용하고 있습니다.
답변
예, 매뉴얼의 의도는 실제로 sorted
그것이 안정적이고 실제로 sort
방법 과 정확히 동일한 알고리즘을 사용함 을 보장하는 것 입니다 . 문서가이 신원에 대해 100 % 명확하지 않다는 것을 알고 있습니다. doc 패치는 항상 기꺼이 받아 들여집니다!
답변
그들은 안정적 입니다.
그건 그렇고, 단일 패스 정렬에서 다중 패스 정렬을 결합하여 정렬 및 정렬이 안정적인지 여부를 알지 못하는 경우가 있습니다.
정렬 할 경우 예를 들어, 자신을 기준으로 개체 last_name
, first_name
속성, 당신은 한 번에 그것을 할 수 있습니다 :
sorted_list= sorted(
your_sequence_of_items,
key= lambda item: (item.last_name, item.first_name))
튜플 비교를 활용합니다.
이 대답은있는 그대로 원래 질문을 다룹니다. 정렬과 관련된 추가 질문은 Python Sorting How-To를 참조하십시오 .
답변
그 동안 변경된 문서 ( 관련 commit )와 현재 문서는이를 sorted
명시 적으로 보장합니다.
내장
sorted()
기능은 안정적입니다. 동일하게 비교되는 요소의 상대적 순서를 변경하지 않도록 보장하는 경우 정렬은 안정적입니다. 이는 여러 단계로 정렬하는 데 유용합니다 (예 : 부서별 정렬, 급여 등급별 정렬).
어떤 있도록 문서의이 부분은 파이썬 2.7 및 파이썬 3.4 (+)에 추가 된 준수 해당 언어 버전의 구현해야 가 안정을 sorted
.
CPython의 경우 Python 2.3list.sort
부터 안정적이었습니다.
- Tim Peters는 그의
list.sort()
구현을 다시 작성했습니다. 이것은 “안정된 정렬”(동일한 입력이 출력에서 동일한 순서로 나타남)이며 이전보다 빠릅니다.
나는 100 % 확신하지 못합니다 sorted
. 요즘은 간단하게 사용 list.sort
하지만 그 기록을 확인하지는 않았습니다. 그러나 “항상”을 사용했을 가능성이 높습니다 list.sort
.
답변
파이썬 2.4 “의 새로운”문서가 효과적으로 “공식적인”문서에 당신은 아니지만 필요가 정렬 된 점을 () 첫 번째는 다음 목록을 작성 보장을 제공하고, 그것을 일종의 ()를 호출합니다. 정말로 걱정된다면 소스를 확인할 수도 있습니다.
답변
정렬에 관한 Python 3.6 문서는 이제 다음과 같이 말합니다.
정렬은 안정적이어야합니다.
또한,이 문서에서, 안정에 대한 링크가 Timsort 한다고,
Timsort는 버전 2.3부터 Python의 표준 정렬 알고리즘이었습니다.