연속 중복 항목 제거
데이터 처리의 일반적인 작업은 목록에서 연속 중복 항목을 제거하는 것입니다. 간단한 Python 구현은 다음과 같습니다.
list = [1,1,1,1,1,1,2,3,4,4,5,1,2] i = 0 while i < len(list)-1: if list[i] == list[i+1]: del list[i] else: i = i+1
이 접근 방식은 반복되는 요소를 제거하여 [1, 2, 3, 4, 5, 1, 2]와 같은 출력을 생성합니다.
값이 연속적으로 반복되는 요소 제거
그러나 개선된 목표는 값이 연속적으로 반복되는 전체 요소를 제거하면 [2, 3, 5, 1, 2]와 같은 출력이 생성됩니다. 이전 접근 방식은 수정될 수 있습니다.
list = [1,1,1,1,1,1,2,3,4,4,5,1,2] i = 0 dupe = False while i < len(list)-1: if list[i] == list[i+1]: del list[i] dupe = True elif dupe: del list[i] dupe = False else: i += 1
이 접근 방식은 기능적이지만 단순화될 수 있습니다.
더 우아한 솔루션
Python은 더 많은 기능을 제공합니다. 목록 조작을 위한 표현 도구. itertools.groupby 사용:
L = [1,1,1,1,1,1,2,3,4,4,5,1,2] from itertools import groupby [key for key, _group in groupby(L)]
이렇게 하면 원하는 출력이 생성됩니다: [1, 2, 3, 4, 5, 1, 2].
작업의 두 번째 부분:
[k for k, g in groupby(L) if len(list(g)) < 2]
groupby를 사용하여 연속적인 중복 항목을 그룹화하고 둘 이상의 요소가 있는 그룹을 필터링하여 효과적으로 제거합니다. 중복된 요소.
원하는 경우 생성기 표현식을 사용하여 임시 목록 생성을 피할 수 있습니다.
[k for k, g in groupby(L) if sum(1 for i in g) < 2]
위 내용은 Python 목록에서 연속 중복 요소를 효율적으로 제거하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!