병렬 목록을 정렬하는 동안 원래 위치 유지
병렬 목록이 있고 한 목록을 정렬하고 다른 목록을 재정렬하려는 시나리오의 경우 동기화된 방식으로 강력한 솔루션이 존재합니다. "장식, 정렬, 장식 취소" 접근 방식을 활용하면 특히 Python에 내장된 zip 기능을 사용하여 프로세스가 단순화됩니다.
Pythonic 솔루션에서는 장식된 zip 객체를 생성한 다음 이를 정렬하고 마지막으로 원본 목록을 추출합니다. 정렬된 우편번호에서. 이 기술은 두 목록 모두에 있는 요소의 원래 위치를 유지합니다.
예를 들어, 목록이 주어지면:
list1 = [3, 2, 4, 1, 1] list2 = ['three', 'two', 'four', 'one', 'one2']
다음 코드를 실행하면:
list1, list2 = zip(*sorted(zip(list1, list2)))
:
list1 = [1, 1, 2, 3, 4] list2 = ['one', 'one2', 'two', 'three', 'four']
단, 목록이 비어 있으면 이 특정 메서드가 제대로 작동하지 않습니다. 이를 약간 수정하면 이 문제를 해결할 수 있습니다.
list1, list2 = (list(t) for t in zip(*sorted(zip(list1, list2))))
Python은 대체 내부 정렬 접근 방식을 제공합니다. 이 접근 방식은 좀 더 장황하지만 작은 목록의 경우 약간의 성능 향상을 제공할 수 있습니다.
tups = zip(list1, list2) tups.sort() list1, list2 = zip(*tups)
요약하자면, 이 문제를 해결하기 위한 여러 접근 방식이 존재하지만 zip 방식은 정렬 전반에 걸쳐 요소의 원래 위치를 유지하는 간결하고 효율적인 솔루션을 제공합니다. 프로세스입니다.
위 내용은 Python에서 병렬 목록의 원래 순서를 유지하면서 하나의 목록을 어떻게 정렬할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!