>  기사  >  백엔드 개발  >  Python에 하위 목록이 있는지 효율적으로 확인하는 방법은 무엇입니까?

Python에 하위 목록이 있는지 효율적으로 확인하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-26 21:55:29151검색

 How to Efficiently Determine if a Sublist Exists in Python?

Python에서 하위 목록 존재 감지

현재 과제는 더 큰 목록 내에 하위 목록이 있는지 확인하는 함수를 고안하는 것입니다. 두 개의 목록(하나는 더 큰 목록(list1)이고 다른 하나는 잠재적인 하위 목록(list2))이 주어지면 함수는 list2가 실제로 list1의 하위 목록인지 확인해야 합니다.

함수 구현

Python은 이러한 목적으로 활용할 수 있는 any()라는 다목적 함수를 제공합니다. 다음 코드 조각은 any()를 사용하는 함수를 구성하는 방법을 보여줍니다.

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

이 함수는 해당 요소를 하나씩 반복하여 더 큰 목록(lst)을 꼼꼼하게 스캔합니다. 인덱스 i의 각 요소에 대해 길이 n의 연속 하위 목록을 추출하고 이를 잠재적 하위 목록(sublst)과 비교합니다. 일치하는 항목이 감지되면 함수는 즉시 True를 반환하여 하위 목록이 있음을 나타냅니다. 이 프로세스는 일치 항목을 찾거나 더 큰 목록 전체가 소진될 때까지 계속되며, 이 경우 함수는 False를 반환합니다.

성능 고려 사항

참고하는 것이 중요합니다. 이 함수의 시간 복잡도는 O(m*n)입니다. 여기서 m은 더 큰 목록의 길이이고 n은 잠재적인 하위 목록의 길이입니다. 각 반복마다 함수는 하위 목록 비교 연산을 수행하며 반복 횟수는 m과 n 더하기 1의 차이로 제한됩니다.

사용 예

해보자 제공된 예제를 사용하여 sublist_exists 함수의 사용법을 보여줍니다.

<code class="python">>>> sublist_exists([1,0,1,1,1,0,0], [1,1,1])
True

>>> sublist_exists([1,0,1,0,1,0,1], [1,1,1])
False</code>

첫 번째 예제에서 [1,1,1]은 실제로 더 큰 목록의 하위 목록이므로 함수는 True를 반환합니다. 두 번째 예에서는 [1,1,1]이 더 큰 목록에 표시되지 않으므로 함수는 False를 반환합니다.

위 내용은 Python에 하위 목록이 있는지 효율적으로 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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