자동 순열로 병렬 목록 정렬
문제 설명
임의의 두 병렬 목록이 주어졌습니다. 데이터 유형, 한 목록을 정렬하는 동시에 다른 목록을 재정렬하는 방법을 고안하십시오. 같은 순서로.
해결책
이 문제를 해결하는 일반적인 접근 방식 중 하나는 "장식, 정렬, 장식 해제" 관용어입니다. Python에 내장된 zip 함수를 사용하면 두 목록의 요소를 튜플로 효율적으로 결합하고 첫 번째 목록의 값을 기준으로 이러한 튜플을 정렬할 수 있습니다. 그런 다음 이 정렬된 튜플 목록을 "장식 해제"하여 원하는 정렬 목록을 얻을 수 있습니다.
구현:
list1, list2 = zip(*sorted(zip(list1, list2))) # Alternatively, for in-place sorting: # tups = zip(list1, list2) # tups.sort() # list1, list2 = zip(*tups)
장점 및 성능
이 접근 방식은 특히 다음과 같은 경우 단순성과 간결성을 우선시합니다. zip 기능을 사용합니다. 그러나 작은 목록의 경우 전체 버전이 약간 더 빠를 수 있습니다.
tups = zip(list1, list2) tups.sort() zip(*tups)
큰 목록의 경우 특정 상황에서는 한 줄 버전이 더 나은 성능을 발휘할 수 있습니다.
대체 접근 방식
댓글에서 언급했듯이 인덱스 정렬이나 사용자 정의 키 기능 제공과 같은 다른 접근 방식도 존재합니다. 정렬 알고리즘. 두 번째 목록의 요소를 직접 비교하는 데 문제가 있는 경우 이러한 대안이 적합할 수 있습니다.
위 내용은 다른 목록의 병렬 순서를 유지하면서 한 목록을 정렬하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!