Given a tuple of lists, the task is to find number of lists in a tuple. This is a very basic problem but can be useful while making some utility application.
Method #1: Using len
Python3
# Python code to find number of list in a tuple # Initial list Input1 = ([ 1 , 2 , 3 , 4 ], [ 5 , 6 , 7 , 8 ]) Input2 = ([ 1 , 2 ], [ 3 , 4 ], [ 5 , 6 ]) Input3 = ([ 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ], [ 1 , 2 , 3 ]) # Using len to find no of list in tuple Output1 = len (Input1) Output2 = len (Input2) Output3 = len (Input3) # Printing print ("Initial list :") print (Input1) print ("No of list in tuples are :") print (Output1) print ("\n") print ("Initial list :") print (Input2) print ("No of list in tuples are :") print (Output2) print ("\n") print ("Initial list :") print (Input3) print ("No of list in tuples are :") print (Output3) print ("\n") |
Initial list : ([1, 2, 3, 4], [5, 6, 7, 8]) No of list in tuples are : 2 Initial list : ([1, 2], [3, 4], [5, 6]) No of list in tuples are : 3 Initial list : ([9, 8, 7, 6, 5, 4, 3, 2, 1], [1, 2, 3]) No of list in tuples are : 2
Method #2: Using function and isinstance
Python3
# Python code to find number of list in a tuple # Using find function def find( Input ): if isinstance ( Input , list ): return 1 else : return len ( Input ) # List initialization Input1 = ([ 1 , 2 , 3 , 4 ], [ 5 , 6 , 7 , 8 ]) Input2 = ([ 1 , 2 ], [ 3 , 4 ], [ 5 , 6 ]) Input3 = ([ 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ]) # using find Output1 = find(Input1) Output2 = find(Input2) Output3 = find(Input3) # printing print ("Initial list :") print (Input1) print ("No of list in tuples are :") print (Output1) print ("\n") print ("Initial list :") print (Input2) print ("No of list in tuples are :") print (Output2) print ("\n") print ("Initial list :") print (Input3) print ("No of list in tuples are :") print (Output3) print ("\n") |
Initial list : ([1, 2, 3, 4], [5, 6, 7, 8]) No of list in tuples are : 2 Initial list : ([1, 2], [3, 4], [5, 6]) No of list in tuples are : 3 Initial list : [9, 8, 7, 6, 5, 4, 3, 2, 1] No of list in tuples are : 1
Method #3: Using type().type() returns the data type of variable.If in case the tuple has different data types other than list, then len() fails.Iterate over tuple and check datatype of each element
Python3
# Python code to find number of list in a tuple # Initial list Input1 = ([ 1 , 2 , 3 , 4 ], [ 5 , 6 , 7 , 8 ], 5 ) # Using type() to find no of list in tuple Output1 = 0 for i in Input1: if ( type (i) is list ): Output1 + = 1 # Printing print ( "Initial list :" ) print (Input1) print ( "No of list in tuples are :" ) print (Output1) |
Initial list : ([1, 2, 3, 4], [5, 6, 7, 8], 5) No of list in tuples are : 2
Method #4: Using __class__
The function find_num_lists() takes in a tuple as an argument and returns the number of elements in the tuple that are lists.
The function uses a list comprehension to iterate over the elements in the tuple and check if the class of the element is list. If it is, it adds 1 to the list. The sum() function is then used to add up all the 1s in the list, which gives the total number of lists in the tuple.
The input tuples Input1 and Input2 are then passed to the find_num_lists() function and the number of lists in each tuple is printed to the console.
Python3
def find_num_lists(t): # Return the number of elements that are lists using the type() and issubclass() functions return sum ([ 1 for element in t if element.__class__ = = list ]) # List initialization Input1 = ([ 1 , 2 , 3 , 4 ], [ 5 , 6 , 7 , 8 ]) Input2 = ([ 1 , 2 ], [ 3 , 4 ], [ 5 , 6 ]) # Find the number of lists in each tuple print ( "Initial list :" ) print (Input1) print ( "No of list in tuples are :" ) print (find_num_lists(Input1)) # Output: 2 print ( "Initial list :" ) print (Input2) print ( "No of list in tuples are :" ) print (find_num_lists(Input2)) # Output: 3 |
Initial list : ([1, 2, 3, 4], [5, 6, 7, 8]) No of list in tuples are : 2 Initial list : ([1, 2], [3, 4], [5, 6]) No of list in tuples are : 3
Time complexity: O(n)
Auxiliary Space: O(n)