> 백엔드 개발 > 파이썬 튜토리얼 > 다른 목록의 병렬 순서를 유지하면서 한 목록을 정렬하려면 어떻게 해야 합니까?

다른 목록의 병렬 순서를 유지하면서 한 목록을 정렬하려면 어떻게 해야 합니까?

Mary-Kate Olsen
풀어 주다: 2024-12-07 15:03:15
원래의
135명이 탐색했습니다.

How Can I Sort One List While Maintaining Parallel Order in Another?

자동 순열로 병렬 목록 정렬

문제 설명

임의의 두 병렬 목록이 주어졌습니다. 데이터 유형, 한 목록을 정렬하는 동시에 다른 목록을 재정렬하는 방법을 고안하십시오. 같은 순서로.

해결책

이 문제를 해결하는 일반적인 접근 방식 중 하나는 "장식, 정렬, 장식 해제" 관용어입니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿