Given a list of lists, the task is to check if a list exists in given list of lists.
Input : lst = [[1, 1, 1, 2], [2, 3, 4], [1, 2, 3], [4, 5, 6]] list_search = [4, 5, 6] Output: True Input : lst = [[5, 6, 7], [12, 54, 9], [1, 2, 3]] list_search = [4, 12, 54] Output: False
Let’s discuss certain ways in which this task is performed.
Method #1: Using Counter The most concise and readable way to find whether a list exists in list of lists is using Counter.
Python3
# Python code find whether a list # exists in list of list. import collections # Input List Initialization Input = [[ 1 , 1 , 1 , 2 ], [ 2 , 3 , 4 ], [ 1 , 2 , 3 ], [ 4 , 5 , 6 ]] # List to be searched list_search = [ 2 , 3 , 4 ] # Flag initialization flag = 0 # Using Counter for elem in Input : if collections.Counter(elem) = = collections.Counter(list_search) : flag = 1 # Check whether list exists or not. if flag = = 0 : print (" False ") else : print (" True ") |
True
Time Complexity: O(n)
Auxiliary Space: O(1)
Method #2: Using in
Python3
# Python code find whether a list # exists in list of list. # Input List Initialization Input = [[ 1 , 1 , 1 , 2 ], [ 2 , 3 , 4 ], [ 1 , 2 , 3 ], [ 4 , 5 , 6 ]] # List to be searched list_search = [ 1 , 1 , 1 , 2 ] # Using in to find whether # list exists or not if list_search in Input : print (" True ") else : print (" False ") |
True
Method #3: Using any
Python3
# Python code find whether a list # exists in list of list. # Input List Initialization Input = [[ 1 , 1 , 1 , 2 ], [ 2 , 3 , 4 ], [ 1 , 2 , 3 ], [ 4 , 5 , 6 ]] # List to be searched list_search = [ 4 , 5 , 6 ] # Using any to find whether # list exists or not if any ( list = = list_search for list in Input ): print (" True ") else : print (" False ") |
True
Method #4 : Using count() method
Python3
# Python code find whether a list # exists in list of list. # Input List Initialization Input = [[ 1 , 1 , 1 , 2 ], [ 2 , 3 , 4 ], [ 1 , 2 , 3 ], [ 4 , 5 , 6 ]] # List to be searched list_search = [ 2 , 3 , 4 ] res = False if ( Input .count(list_search)> = 1 ): res = True print (res) |
True
Time Complexity: O(n), where n is length of Input list.
Auxiliary Space: O(1)
Method #5: Using all() and any() both
Here is an approach using a list comprehension and the all function:
Python3
# Python code find whether a list # exists in list of list. #initialization lst = [[ 1 , 1 , 1 , 2 ], [ 2 , 3 , 4 ], [ 1 , 2 , 3 ], [ 4 , 5 , 6 ]] list_search = [ 4 , 5 , 6 ] #list comprehension generates a list of boolean values that #indicate whether list_search is contained in each sublist in lst. result = any ( all (item in sublist for item in list_search) for sublist in lst) #printing result print (result) #This code is contributed by Edula Vinay Kumar Reddy |
True
This would also output True.
The any function returns True if any element in the input iterable is True, and False otherwise. In this case, the list comprehension generates a list of boolean values that indicate whether list_search is contained in each sublist in lst. The any function then returns True if any of these boolean values is True, which indicates that list_search exists in lst.
In terms of time complexity, this approach has a complexity of O(n) since it needs to iterate over all the sublists in lst to check for the presence of list_search. In terms of space complexity, it has a complexity of O(n) since it creates a list of boolean values that is the same size as lst.