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

Barbara Streisand
풀어 주다: 2024-11-23 15:24:25
원래의
550명이 탐색했습니다.

How Can I Efficiently Deduplicate a List of Lists While Maintaining Order?

목록 목록에서 중복 항목을 효율적으로 제거

목록 목록이 주어졌을 때 목표는 순서를 유지하면서 중복 요소를 제거하는 것입니다. 목록을 튜플로 변환하여 세트를 활용하는 것은 간단하지만 비효율적입니다.

itertools.groupby()

itertools를 활용하면 놀라운 솔루션이 제공됩니다.

import itertools

k.sort()
list(k for k,_ in itertools.groupby(k))
로그인 후 복사

이 접근 방식은 뛰어난 기능:

  • 목록을 정렬하여 정렬 중복.
  • 요소를 기준으로 목록을 그룹화하며 각 그룹은 첫 번째 항목으로 표시됩니다.
  • 그룹 키(중복 제거됨)를 다시 목록으로 변환합니다.

벤치마크 분석

광범위한 벤치마킹 결과 "groupby"가 일반적으로 대량 입력에 대해 다른 방법보다 성능이 뛰어난 것으로 나타났습니다. 목록. 그러나 중복이 거의 없는 작은 목록의 경우 "루프 인" 접근 방식이 약간 더 빠를 수 있습니다.

특정 애플리케이션에 대한 최적화

성능이 가장 중요한 경우 다음을 고려하세요.

  • 휴리스틱 입력 분석: 입력 특성을 탐지하여 알고리즘 안내 선택.
  • 대체 데이터 구조: 튜플 집합이 데이터에 더 적합한 표현인지 평가합니다.
  • 확률적 모델링: 분석 성능 측정을 최적화하기 위한 중복 배포

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

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