Python Program to find tuple indices from other tuple list
Given Tuples list and search list consisting of tuples to search, our task is to write a Python Program to extract indices of matching tuples.
Input : test_list = [(4, 5), (7, 6), (1, 0), (3, 4)], search_tup = [(3, 4), (8, 9), (7, 6), (1, 2)]
Output : [3, 1]
Explanation : (3, 4) from search list is found on 3rd index on test_list, hence included in result.
Input : test_list = [(4, 5), (7, 6), (1, 0), (3, 4)], search_tup = [(3, 4), (8, 9), (7, 6), (1, 0)]
Output : [3, 1, 2]
Explanation : (3, 4) from search list is found on 3rd index on test_list, hence included in result.
Method #1 : Using lookup dictionary + enumerate() + list comprehension
In this, a lookup dictionary is formed to map all the tuples with matching one’s indices. Then lookup dictionary is used to get indices of mapped tuples as result using list comprehension.
Python3
# Python3 code to demonstrate working of # Find tuple indices from other tuple list # Using lookup dictionary + enumerate() + list comprehension # initializing list test_list = [( 4 , 5 ), ( 7 , 6 ), ( 1 , 0 ), ( 3 , 4 )] # printing original list print ( "The original list is : " + str (test_list)) # initializing search tuple search_tup = [( 3 , 4 ), ( 8 , 9 ), ( 7 , 6 ), ( 1 , 2 )] # creating lookup_dict lookup_dict = {val: key for key,val in enumerate (test_list)} # creating result list res = [lookup_dict[idx] for idx in search_tup if idx in lookup_dict] # printing result print ( "The match tuple indices : " + str (res)) |
Output:
The original list is : [(4, 5), (7, 6), (1, 0), (3, 4)] The match tuple indices : [3, 1]
Method #2 : Using list comprehension + enumerate()
In this, we perform the task of getting indices using enumerate(), and list comprehension is used for the task of iteration of all the elements of tuple and matching for equality.
Python3
# Python3 code to demonstrate working of # Find tuple indices from other tuple list # Using list comprehension + enumerate() # initializing list test_list = [( 4 , 5 ), ( 7 , 6 ), ( 1 , 0 ), ( 3 , 4 )] # printing original list print ( "The original list is : " + str (test_list)) # initializing search tuple search_tup = [( 3 , 4 ), ( 8 , 9 ), ( 7 , 6 ), ( 1 , 2 )] # enumerate() gets all the indices res = [idx for idx, val in enumerate (test_list) for ele in search_tup if ele = = val] # printing result print ( "The match tuple indices : " + str (res)) |
Output:
The original list is : [(4, 5), (7, 6), (1, 0), (3, 4)] The match tuple indices : [1, 3]
Method #3 : Using index() method
Python3
# Python3 code to demonstrate working of # Find tuple indices from other tuple list # initializing list test_list = [( 4 , 5 ), ( 7 , 6 ), ( 1 , 0 ), ( 3 , 4 )] # printing original list print ( "The original list is : " + str (test_list)) # initializing search tuple search_tup = [( 3 , 4 ), ( 8 , 9 ), ( 7 , 6 ), ( 1 , 2 )] res = [] for i in search_tup: if i in test_list: res.append(test_list.index(i)) # printing result print ( "The match tuple indices : " + str (res)) |
The original list is : [(4, 5), (7, 6), (1, 0), (3, 4)] The match tuple indices : [3, 1]
Method #4: Using operator.countOf() method
Python3
# Python3 code to demonstrate working of # Find tuple indices from other tuple list import operator as op # initializing list test_list = [( 4 , 5 ), ( 7 , 6 ), ( 1 , 0 ), ( 3 , 4 )] # printing original list print ( "The original list is : " + str (test_list)) # initializing search tuple search_tup = [( 3 , 4 ), ( 8 , 9 ), ( 7 , 6 ), ( 1 , 2 )] res = [] for i in search_tup: if op.countOf(test_list,i)> 0 : res.append(test_list.index(i)) # printing result print ( "The match tuple indices : " + str (res)) |
The original list is : [(4, 5), (7, 6), (1, 0), (3, 4)] The match tuple indices : [3, 1]
Time Complexity: O(N)
Auxiliary Space: O(N)
Please Login to comment...