Sometimes, while working with Python Records, we can have a problem in which we need to perform the modification of element records on equality of records. This can have a problem in domains that involve data. Let’s discuss certain ways in which this task can be performed.
Input : test_list = [[(12, 5)], [(13, 2)], [(6, 7)]] test_row = [(13, 2)] Output : [[(12, 5)], [(13, 8)], [(6, 7)]] Input : test_list = [[(12, 5), (7, 6)]] test_row = [(13, 2)] Output : [[(12, 5), (7, 6)]]
Method #1 : Using loop + enumerate() The combination of above functions can be used to solve this problem. In this, we apply brute force for performing task of checking for equality and performing required modification.
# Python3 code to demonstrate working of # Modify Equal Tuple Rows # Using loop + enumerate() # initializing list test_list = [[( 12 , 5 ), ( 13 , 6 )], [( 12 , 2 ), ( 13 , 2 )]]
# printing original list print ("The original list is : " + str (test_list))
# initializing check row test_row = [( 12 , 2 ), ( 13 , 2 )]
# Modify Equal Tuple Rows # Using loop + enumerate() # multiple y coordinate by 4 for idx, val in enumerate (test_list):
if val = = test_row:
temp = []
for sub in val:
ele = (sub[ 0 ], sub[ 1 ] * 4 )
temp.append(ele)
test_list[idx] = temp
# printing result print (" List after modification : " + str (test_list))
|
The original list is : [[(12, 5), (13, 6)], [(12, 2), (13, 2)]] List after modification : [[(12, 5), (13, 6)], [(12, 8), (13, 8)]]
Time Complexity: O(n*n) where n is the number of elements in the list “test_list”. loop + enumerate() performs n*n number of operations.
Auxiliary Space: O(n), extra space is required where n is the number of elements in the list
Method #2 : Using list comprehension This is yet another way in which this task can be performed. In this, we perform the task using list comprehension in a one-liner way similar to above method.
# Python3 code to demonstrate working of # Modify Equal Tuple Rows # Using list comprehension # initializing list test_list = [[( 12 , 5 ), ( 13 , 6 )], [( 12 , 2 ), ( 13 , 2 )]]
# printing original list print ("The original list is : " + str (test_list))
# initializing check row test_row = [( 12 , 2 ), ( 13 , 2 )]
# Modify Equal Tuple Rows # Using list comprehension # multiple y coordinate by 4 res = [[(sub[ 0 ], sub[ 1 ] * 4 ) for sub in ele] if ele = = test_row else ele for ele in test_list]
# printing result print (" List after modification : " + str (res))
|
The original list is : [[(12, 5), (13, 6)], [(12, 2), (13, 2)]] List after modification : [[(12, 5), (13, 6)], [(12, 8), (13, 8)]]