>백엔드 개발 >파이썬 튜토리얼 >Python에서 병렬 목록의 원래 순서를 유지하면서 하나의 목록을 어떻게 정렬할 수 있습니까?

Python에서 병렬 목록의 원래 순서를 유지하면서 하나의 목록을 어떻게 정렬할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-10 06:54:14727검색

How Can I Sort One List While Maintaining the Original Order of a Parallel List in Python?

병렬 목록을 정렬하는 동안 원래 위치 유지

병렬 목록이 있고 한 목록을 정렬하고 다른 목록을 재정렬하려는 시나리오의 경우 동기화된 방식으로 강력한 솔루션이 존재합니다. "장식, 정렬, 장식 취소" 접근 방식을 활용하면 특히 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.