Searching Lists for Sublist Presence in Python
Identifying the presence of a sublist within a larger list is a common programming task. Python offers a straightforward solution for this problem using a custom function.
Problem Formulation:
Given two lists, list1 and list2, determine if the elements of list2 exist as a contiguous sequence within list1. Consider the following test cases:
<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>
Implementation:
Python's functional programming capabilities allow for a concise solution using the any() function and list comprehensions:
<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>
This function takes two arguments: lst (the main list) and sublst (the sublist to be searched for). It calculates the length of sublst and uses a list comprehension to generate a sequence of index ranges within lst. For each range, it compares sublst to the corresponding elements in lst. If a match is found, any() returns True; otherwise, it returns False.
Example Usage:
In the provided test cases, sublistExists(list1, [1,1,1]) returns True and sublistExists(list2, [1,1,1]) returns False, as expected.
Note:
The any() function optimizes the search by terminating on the first match. The function has a time complexity of O(m*n), where m is the length of lst and n is the length of sublst.
The above is the detailed content of How Can You Efficiently Determine Sublist Presence Within a Larger List in Python?. For more information, please follow other related articles on the PHP Chinese website!