>  기사  >  백엔드 개발  >  Python의 더 큰 목록 내에서 하위 목록의 존재를 어떻게 효율적으로 확인할 수 있습니까?

Python의 더 큰 목록 내에서 하위 목록의 존재를 어떻게 효율적으로 확인할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-26 22:33:31391검색

How Can You Efficiently Determine Sublist Presence Within a Larger List in Python?

Python에서 목록에 하위 목록 존재 검색

더 큰 목록 내에서 하위 목록이 있는지 식별하는 것은 일반적인 프로그래밍 작업입니다. Python은 사용자 정의 함수를 사용하여 이 문제에 대한 간단한 솔루션을 제공합니다.

문제 공식화:

두 개의 목록 list1과 list2가 주어지면 list2의 요소가 다음과 같이 존재하는지 확인합니다. list1 내의 연속 시퀀스. 다음 테스트 사례를 고려하십시오.

<code class="python">list1 = [1,0,1,1,1,0,0]
list2 = [1,0,1,0,1,0,1]

# Should return True
sublistExists(list1, [1,1,1])

# Should return False
sublistExists(list2, [1,1,1])</code>

구현:

Python의 함수형 프로그래밍 기능은 any() 함수와 목록 이해를 사용하여 간결한 솔루션을 허용합니다.

<code class="python">def contains_sublist(lst, sublst):
    n = len(sublst)
    return any((sublst == lst[i:i+n]) for i in range(len(lst)-n+1))</code>

이 함수는 lst(메인 목록)와 sublst(검색할 하위 목록)라는 두 가지 인수를 사용합니다. sublst의 길이를 계산하고 목록 이해를 사용하여 lst 내의 인덱스 범위 시퀀스를 생성합니다. 각 범위에 대해 sublst를 lst의 해당 요소와 비교합니다. 일치하는 항목이 발견되면 any()는 True를 반환합니다. 그렇지 않으면 False를 반환합니다.

사용 예:

제공된 테스트 사례에서 sublistExists(list1, [1,1,1])는 True를 반환하고 sublistExists( list2, [1,1,1])은 예상대로 False를 반환합니다.

참고:

any() 함수는 첫 번째 일치 항목을 종료하여 검색을 최적화합니다. . 이 함수의 시간 복잡도는 O(m*n)입니다. 여기서 m은 lst의 길이이고 n은 sublst의 길이입니다.

위 내용은 Python의 더 큰 목록 내에서 하위 목록의 존재를 어떻게 효율적으로 확인할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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