Python에서 한 목록의 요소가 다른 목록의 요소와 겹치는지 어떻게 확인합니까?

Susan Sarandon
풀어 주다: 2024-10-20 08:05:29
원래의
121명이 탐색했습니다.

How Do I Check if Elements from One List Overlap with Another in Python?

Python에서 목록 중복 테스트

소개

Python에서 한 목록의 요소가 다른 목록에 있는지 확인하는 것은 다양한 데이터 조작 작업에 필수적입니다. 이 문서에서는 이러한 중복을 테스트하고 효율성을 평가하며 모범 사례를 제공하는 다양한 방법을 살펴봅니다.

접근 방식

1. 생성기 표현식

<code class="python">any(i in a for i in b)</code>
로그인 후 복사

이 메서드는 한 목록을 반복하고 다른 목록의 멤버십을 확인하여 일치하는 항목이 있으면 True를 반환합니다. 시간 복잡도는 O(n)이며, 여기서 n은 더 큰 목록의 길이입니다.

2. 교차점 설정

<code class="python">bool(set(a) & set(b))</code>
로그인 후 복사

이 접근 방식은 두 목록을 모두 집합으로 변환하고 교차점을 찾습니다. 교차점이 비어 있지 않으면 True를 반환합니다. 이에 대한 최악의 시간 복잡도는 O(n·m)이며, 여기서 n과 m은 목록의 길이입니다.

3. 하이브리드 집합 교차

<code class="python">a = set(a)
any(i in a for i in b)</code>
로그인 후 복사

이 방법은 한 목록만 집합으로 변환하고 다른 목록을 반복하여 집합 멤버십을 확인합니다. 중간 집합 생성을 방지하여 기존 집합 교차보다 속도가 빠릅니다.

4. Isdisjoint 방법

<code class="python">not set(a).isdisjoint(b)</code>
로그인 후 복사

이 접근 방식은 고정 집합의 isdisjoint 방법을 사용하여 공통 요소가 있는지 확인합니다. 그렇지 않은 경우 결과는 False입니다. 그렇지 않으면 True입니다.

효율성 비교

최악의 경우:

  • 생성기 표현: O(n)
  • 집합 교집합: O(n·m)
  • 하이브리드 집합 교집합: O(n·m)
  • Isdisjoint 방법: O(1)

대부분의 경우 isdisjoint 메서드는 상수 시간 집합 멤버십 검사의 이점을 누리므로 가장 빠릅니다.

생성기 표현식의 최상의 사례:

  • 목록의 처음 몇 요소가 중복. 이 경우 생성기 표현식은 True를 신속하게 반환할 수 있습니다.

고려할 요소:

  • 목록 크기
  • 분포 목록 내의 요소
  • 공유 요소의 빈도

모범 사례

  • 작은 목록(< 10개 요소)의 경우 isdisjoint 방법을 사용하세요.
  • 목록 구조가 예측 가능한 경우(예: 정렬) 생성기 표현식이 더 빠를 수 있습니다.
  • 목록 간에 상당한 크기 차이가 있는 경우 다음과 같이 더 작은 목록과 함께 isdisjoint 메서드를 사용하세요. 첫 번째 인수.
  • 공유 요소가 거의 없거나 전혀 없는 목록의 경우 일반적으로 isdisjoint 방법이 더 효율적입니다.

위 내용은 Python에서 한 목록의 요소가 다른 목록의 요소와 겹치는지 어떻게 확인합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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