>백엔드 개발 >파이썬 튜토리얼 >Python에서 고유한 요소를 유지하면서 목록에서 연속 중복 항목을 효율적으로 제거할 수 있는 방법은 무엇입니까?

Python에서 고유한 요소를 유지하면서 목록에서 연속 중복 항목을 효율적으로 제거할 수 있는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-11 19:12:12117검색

How Can We Efficiently Remove Consecutive Duplicates from a List While Preserving Unique Elements in Python?

연속 중복 요소 제거 및 고유 요소 보존

목록 작업 시 연속 중복 요소를 제거해야 하는 경우가 많습니다. 의문이 생깁니다. 고유한 요소를 유지하면서 어떻게 이러한 요소를 효율적으로 제거할 수 있습니까?

한 가지 접근 방식은 목록을 반복하면서 각 요소를 후속 요소와 비교하는 것입니다. 동일하면 현재 요소를 삭제합니다. 이 방법은 기능적이지만 상대적으로 비효율적이며 Python의 우아함이 부족합니다.

중복 항목의 우아한 제거를 위해 GroupBy 사용

Python itertools 모듈은 groupby라는 강력한 기능을 제공합니다. 연속된 요소를 효율적으로 그룹화할 수 있습니다. groupby를 활용하면 더 적은 코드 줄과 향상된 명확성으로 목표를 달성할 수 있습니다.

질문의 첫 번째 부분(고유한 요소 찾기)에서는 groupby를 사용하여 연속된 요소를 그룹화한 다음 키를 선택할 수 있습니다. (고유한 요소를 나타냄)

from itertools import groupby

L = [1,1,1,1,1,1,2,3,4,4,5,1,2]
unique_elements = [key for key, _group in groupby(L)]

출력:

[1, 2, 3, 4, 5, 1, 2]

고유한 요소 유지 Sum을 사용하는 요소

해법을 더욱 구체화하려면 연속적으로 중복되는 요소를 제거해야 합니다. 다시 한번, groupby가 우리를 도와줍니다. 각 그룹의 길이를 확인하여 요소가 고유한지 여부를 확인할 수 있습니다.

distinct_elements = [k for k, g in groupby(L) if len(list(g)) < 2]

출력:

[2, 3, 5, 1, 2]

또는 생성기 표현식을 사용하여 생성을 방지할 수 있습니다. 각 그룹에 대한 임시 목록을 생성하고 대신 생성기의 합계를 계산합니다.

distinct_elements = [k for k, g in groupby(L) if sum(1 for i in g) < 2]

이는 다음을 보다 간결하고 효율적으로 구현합니다. 솔루션을 사용하여 고유한 요소를 유지하면서 연속 중복을 효과적으로 제거합니다.

위 내용은 Python에서 고유한 요소를 유지하면서 목록에서 연속 중복 항목을 효율적으로 제거할 수 있는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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