파이썬 목록에서 중복을 찾는 방법

Rayven Esplanada 2023년1월30일
  1. set()함수를 사용하여 Python 목록에서 중복 제거
  2. iteration_utils모듈을 사용하여 Python 목록에서 중복 찾기
파이썬 목록에서 중복을 찾는 방법

이 자습서에서는 Python의 목록에서 중복 항목을 찾는 방법을 보여줍니다.

set()함수를 사용하여 Python 목록에서 중복 제거

Python set()은 목록을 집합으로 변환하는 함수입니다. 세트 및 목록의 설명에 따라 목록을 세트로 변환하는 것은 목록의 모든 중복 항목을 제거하는 것을 의미합니다.

그러나 우리가 원하는 것은 목록에서 중복 된 항목을 검색하는 것입니다. 이를 위해 여전히set()함수를 사용하지만 목록에 둘 이상의 항목이있는 항목 만 포함합니다. 즉, 중복 항목이있는 항목임을 의미합니다.

목록에서 중복을 찾아서 세트로 저장하는 함수를 선언하십시오.

def listToSet(listNums):
    set([num for num in listNums if listNums.count(x) > 1])

결과를 집합 대신 목록으로 유지하려는 경우 또 다른 방법은set()add()를 사용하여 목록 내에서 중복을 찾고 반환하는 동안 목록으로 다시 변환하는 것입니다.

def list_duplicates(listNums):
    once = set()
    seenOnce = once.add
    twice = set(num for num in listNums if num in once or seenOnce(x))
    return list(twice)

이 함수는 숫자가 처음 나타나는 경우 once에 항목을 추가하고 설정된 once내에 존재하지 않습니다.

하나는 세트이고 다른 하나는 목록이지만 두 함수 모두 동일한 출력을 반환합니다. 결과는listNums의 모든 중복 항목을 출력합니다.

[1, 3, 5, 8]

iteration_utils모듈을 사용하여 Python 목록에서 중복 찾기

iteration_utils에는 사전 정의 된 함수 내에서 중복을 검색 할 수있는 두 가지 함수 인duplicatesunique_everseen이 있습니다.

위와 동일한 목록 정의listNums를 사용할 것입니다.

iteration_utils에서duplicates를 가져 와서listNums 내의 모든 중복 목록을 반환하는 데 사용합니다.

from iteration_utils import duplicates

listNums = [1, 1, 2, 3, 3, 4, 5, 5, 5, 5, 6, 8, 8]


def listDups(listNums):
    return list(duplicates(listNums))

위 함수의 출력은listNums 내의 모든 중복 항목 목록을 반환합니다.

[1, 1, 3, 3, 5, 5, 5, 5, 8, 8]

그러나 목록에는 중복 항목의 반복도 포함됩니다. 즉, 중복 된 항목의 모든 인스턴스를 반환합니다.

-여기에서unique_everseen이 들어옵니다.이 함수는duplicates()가 반환하는 모든 중복 인스턴스를 제거하기 위해 목록을 처리합니다.

from iteration_utils import duplicates
from iteration_utils import unique_everseen

listNums = [1, 1, 2, 3, 3, 4, 5, 5, 5, 5, 6, 8, 8]


def listDupsUnique(listNums):
    return list(unique_everseen(duplicates(listNums)))

이 함수는 다음을 반환합니다.

[1, 3, 5, 8]

요약하면 Python의 목록 내에서 중복을 찾는 두 가지 쉬운 솔루션이 있습니다. 첫 번째는 파이썬에서set()및 기타 집합의 유틸리티 함수를 사용하여 중복을 찾아 다른 변수에 저장하는 것입니다. 또 다른 하나는duplicatesunique_everseen을 사용하는iteration_utils 모듈로, 어느 정도 동일한 작업을 수행하고 동일한 출력을 생성합니다.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

관련 문장 - Python List