>백엔드 개발 >파이썬 튜토리얼 >Python에서 순서를 유지하면서 목록에서 중복 항목을 효율적으로 제거하려면 어떻게 해야 합니까?

Python에서 순서를 유지하면서 목록에서 중복 항목을 효율적으로 제거하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-31 05:50:13727검색

How Can I Efficiently Remove Duplicates from a List While Preserving Order in Python?

목록에서 중복 항목을 제거하는 동안 순서 유지

원래 순서를 유지하면서 목록에서 중복 요소를 제거하는 것은 어려울 수 있습니다. 중복을 제거하기 위한 세트는 일반적으로 초기 시퀀스를 방해합니다.

이 문제를 해결하기 위해 Python 커뮤니티는 다양한 개발을 수행했습니다. 내장된 관용적 솔루션. 가장 효율적인 옵션 중 하나는 집합을 활용하여 중복 항목을 효율적으로 감지하고 제거하는 f7이라는 기능입니다.

def f7(seq):
    seen = set()
    seen_add = seen.add
    return [x for x in seq if not (x in seen or seen_add(x))]

이 함수는 visible이라는 집합을 사용하여 중복 항목을 신속하게 식별하고 제거합니다. 비밀 최적화는 see.add를 지역 변수로 see_add에 할당하는 데 있습니다. 이렇게 하면 Python이 반복할 때마다 visible.add를 동적으로 해결하지 못하게 되며, 이로 인해 visible.add가 변경될 가능성이 있어 성능 저하가 발생할 수 있습니다.

ActiveState의 정렬된 집합 데이터 구조와 같은 다른 대안은 다음과 같습니다. 동일한 데이터 세트에서 중복 제거 작업을 자주 수행할 것으로 예상되는 경우에도 사용할 수 있습니다.

제공된 코드에서 visible.add()는 지속적으로 None을 반환하므로 집합 업데이트를 트리거하는 방법으로 논리 또는 연산자를 사용합니다.

위 내용은 Python에서 순서를 유지하면서 목록에서 중복 항목을 효율적으로 제거하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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