Python – Modify Equal Tuple Rows
Last Updated :
13 Mar, 2023
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
test_list = [[( 12 , 5 ), ( 13 , 6 )], [( 12 , 2 ), ( 13 , 2 )]]
print ("The original list is : " + str (test_list))
test_row = [( 12 , 2 ), ( 13 , 2 )]
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
print (" List after modification : " + str (test_list))
|
Output :
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
test_list = [[( 12 , 5 ), ( 13 , 6 )], [( 12 , 2 ), ( 13 , 2 )]]
print ("The original list is : " + str (test_list))
test_row = [( 12 , 2 ), ( 13 , 2 )]
res = [[(sub[ 0 ], sub[ 1 ] * 4 ) for sub in ele] if ele = = test_row else ele for ele in test_list]
print (" List after modification : " + str (res))
|
Output :
The original list is : [[(12, 5), (13, 6)], [(12, 2), (13, 2)]]
List after modification : [[(12, 5), (13, 6)], [(12, 8), (13, 8)]]
Share your thoughts in the comments
Please Login to comment...