연속 중복 요소 제거 및 고유 요소 보존
목록 작업 시 연속 중복 요소를 제거해야 하는 경우가 많습니다. 의문이 생깁니다. 고유한 요소를 유지하면서 어떻게 이러한 요소를 효율적으로 제거할 수 있습니까?
한 가지 접근 방식은 목록을 반복하면서 각 요소를 후속 요소와 비교하는 것입니다. 동일하면 현재 요소를 삭제합니다. 이 방법은 기능적이지만 상대적으로 비효율적이며 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!