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.
# 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
# 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
# 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
# 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:
# 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.