Python | Replace tuple according to Nth tuple element
Last Updated :
03 May, 2023
Sometimes, while working with data, we might have a problem in which we need to replace the entry in which a particular entry of data is matching. This can be a matching phone no, id etc. This has it's application in web development domain. Let's discuss certain ways in which this task can be performed.
Method #1: Using loop + enumerate() This task can be performed using the combination of loops and enumerate function which can help to access the Nth element and then check and replace when the condition is satisfied.
Python3
# Python3 code to demonstrate working of
# Replace tuple according to Nth tuple element
# Using loops + enumerate()
# Initializing list
test_list = [('gfg', 1), ('was', 2), ('best', 3)]
# printing original list
print("The original list is : " + str(test_list))
# Initializing change record
repl_rec = ('is', 2)
# Initializing N
N = 1
# Replace tuple according to Nth tuple element
# Using loops + enumerate()
for key, val in enumerate(test_list):
if val[N] == repl_rec[N]:
test_list[key] = repl_rec
break
# printing result
print("The tuple after replacement is : " + str(test_list))
OutputThe original list is : [('gfg', 1), ('was', 2), ('best', 3)]
The tuple after replacement is : [('gfg', 1), ('is', 2), ('best', 3)]
Time Complexity: O(n)
Auxiliary Space: O(1)
Method #2: Using list comprehension This is the one-liner approach to solve this particular problem. In this, we just iterate the list element and keep matching the matching Nth element of tuple and perform replacement.
Python3
# Python3 code to demonstrate working of
# Replace tuple according to Nth tuple element
# Using list comprehension
# Initializing list
test_list = [('gfg', 1), ('was', 2), ('best', 3)]
# printing original list
print("The original list is : " + str(test_list))
# Initializing change record
repl_rec = ('is', 2)
# Initializing N
N = 1
# Replace tuple according to Nth tuple element
# Using list comprehension
res = [repl_rec if sub[N] == repl_rec[N] else sub for sub in test_list]
# printing result
print("The tuple after replacement is : " + str(res))
OutputThe original list is : [('gfg', 1), ('was', 2), ('best', 3)]
The tuple after replacement is : [('gfg', 1), ('is', 2), ('best', 3)]
Time complexity: O(n), where n is the length of the input list.
Auxiliary space: O(n), as we are creating a new list to store the result.
Method #3 : Using the map() function
This method uses the map() function to check and replace the element that matches the condition.
Python3
# Python3 code to demonstrate working of
# Replace tuple according to Nth tuple element
# Using map()
# Initializing list
test_list = [('gfg', 1), ('was', 2), ('best', 3)]
# printing original list
print("The original list is : " + str(test_list))
# Initializing change record
repl_rec = ('is', 2)
# Initializing N
N = 1
# Replace tuple according to Nth tuple element
# Using map()
res = list(map(lambda x: repl_rec if x[N] == repl_rec[N] else x, test_list))
# printing result
print("The tuple after replacement is : " + str(res))
# Output:
# The original list is : [('gfg', 1), ('was', 2), ('best', 3)]
# The tuple after replacement is : [('gfg', 1), ('is', 2), ('best', 3)]
#This code is contributed by Edula Vinay Kumar Reddy
OutputThe original list is : [('gfg', 1), ('was', 2), ('best', 3)]
The tuple after replacement is : [('gfg', 1), ('is', 2), ('best', 3)]
Time complexity: O(n), as it iterates through the list of tuples once.
Auxiliary space: O(n) as it creates a new list to store the modified tuples, the size of this list is equal to the size of the original list.
Method #4: Use the filter() function along with a lambda function
The filter() function is used to remove the tuples from test_list that don't match the value of the Nth element in repl_rec. The resulting map object is converted to a list using the list() function. Then, the repl_rec tuple is added to the list using the concatenation operator +. The resulting list contains the tuples with the replaced value.
Python3
test_list = [('gfg', 1), ('was', 2), ('best', 3)] # initializing list
repl_rec = ('is', 2) # initializing change record
N = 1 # initializing N
# using filter function with lambda to remove tuples that don't match value of Nth element, and then adding repl_rec tuple to the list
test_list = list(filter(lambda x: x[N] != repl_rec[N], test_list)) + [repl_rec]
print("The tuple after replacement is : " + str(test_list)) # printing result
OutputThe tuple after replacement is : [('gfg', 1), ('best', 3), ('is', 2)]
Time complexity: O(n), where n is the number of tuples in the list.
Auxiliary space: O(n), where n is the number of tuples in the list.
Method #5: Using a simple loop.
- Define a list of tuples test_list containing three tuples.
- Define a tuple repl_rec to use as a replacement.
- Create a new list res by iterating over each tuple in test_list.
- For each tuple x in test_list, use a ternary expression to check if the second element of x is equal to 2. If it is, replace x with repl_rec, otherwise keep x as it is.
- Print the updated list res containing the original tuples with the specified replacement tuple.
Python3
test_list = [('gfg', 1), ('was', 2), ('best', 3)]
repl_rec = ('is', 2)
N = 1
# Create an empty list to store the updated tuples
res = []
# Iterate over each tuple in the original list
for x in test_list:
# Check if the Nth element of the tuple matches the Nth element of the replacement tuple
if x[N] == repl_rec[N]:
# If it matches, add the replacement tuple to the result list
res.append(repl_rec)
else:
# If it doesn't match, add the original tuple to the result list
res.append(x)
# Print the updated list of tuples
print("The tuple after replacement is : " + str(res))
OutputThe tuple after replacement is : [('gfg', 1), ('is', 2), ('best', 3)]
Time complexity: O(n), where n is the number of tuples in the list.
Auxiliary space: O(n), where n is the number of tuples in the list.
Method #6: Using itertools.starmap().
Step-by-step approach:
- Initialize the list of tuples and the replacement tuple.
- Use itertools.starmap() method to iterate over each tuple in the original list.
- Use lambda function to check if the Nth element of the current tuple is equal to the Nth element of the replacement tuple.
- If the elements are equal, return the replacement tuple, else return the current tuple.
- Convert the iterator returned by starmap() to a list and store it in res.
- Print the updated list of tuples.
Python3
import itertools
# Initializing list
test_list = [('gfg', 1), ('was', 2), ('best', 3)]
# printing original list
print("The original list is : " + str(test_list))
# Initializing change record
repl_rec = ('is', 2)
# Initializing N
N = 1
res = list(itertools.starmap(lambda *x: repl_rec if x[N] == repl_rec[N] else x, test_list))
# printing result
print("The tuple after replacement is : " + str(res))
OutputThe original list is : [('gfg', 1), ('was', 2), ('best', 3)]
The tuple after replacement is : [('gfg', 1), ('is', 2), ('best', 3)]
Time Complexity: O(n), The time complexity of the lambda function and the starmap() method is O(1) as they execute for each tuple in the list. Therefore, the overall time complexity is O(n), where n is the number of tuples in the list.
Auxiliary Space: O(n) as we create a new list to store the updated tuples.
Method #7: Using reduce() function from functools module
- Import the functools module to use the reduce() function.
- Define a lambda function to iterate over the original list and compare the Nth element of each tuple with that of the replacement tuple.
- If they match, append the replacement tuple to the result list.
- If they don't match, append the original tuple to the result list.
- Use the reduce() function with the lambda function and the initial value of an empty list to obtain the updated list of tuples.
- Print the updated list of tuples.
Python3
import functools
test_list = [('gfg', 1), ('was', 2), ('best', 3)]
repl_rec = ('is', 2)
N = 1
# Define a lambda function to update the list of tuples
update_list = lambda res, x: res + [repl_rec] if x[N] == repl_rec[N] else res + [x]
# Use reduce() function with lambda function and initial value of an empty list to update the list of tuples
res = functools.reduce(update_list, test_list, [])
# Print the updated list of tuples
print("The tuple after replacement is : " + str(res))
OutputThe tuple after replacement is : [('gfg', 1), ('is', 2), ('best', 3)]
Time complexity: O(n), where n is the length of the input list.
Auxiliary space: O(n), where n is the length of the input list.
Similar Reads
Python | Adding N to Kth tuple element
Many times, while working with records, we can have a problem in which we need to change the value of tuple elements. This is a common problem while working with tuples. Let's discuss certain ways in which N can be added to Kth element of tuple in list. Method #1 : Using loop Using loops this task c
3 min read
Python - Raise elements of tuple as power to another tuple
Sometimes, while working with records, we can have a problem in which we may need to perform exponentiation, i.e power of tuples. This problem can occur in day-day programming. Letâs discuss certain ways in which this task can be performed. Method #1: Using zip() + generator expression The combinati
8 min read
Python - Sort Tuple List by Nth Element of Tuple
We are given list of tuple we need to sort tuple by Nth element of each tuple. For example d = [(1, 5), (3, 2), (2, 8), (4, 1)] and k=1 we need to sort by 1st element of each tuple so that output for given list should be [(4, 1), (3, 2), (1, 5), (2, 8)]Using sorted() with lambdasorted() function wit
3 min read
Python | Filter tuples according to list element presence
Sometimes, while working with records, we can have a problem in which we have to filter all the tuples from a list of tuples, which contains atleast one element from a list. This can have applications in many domains working with data. Let's discuss certain ways in which this task can be performed.
8 min read
Access front and rear element of Python tuple
Sometimes, while working with records, we can have a problem in which we need to access the initial and last data of a particular record. This kind of problem can have application in many domains. Let's discuss some ways in which this problem can be solved. Method #1: Using Access Brackets We can pe
6 min read
Python - Convert Tuple String to Integer Tuple
Interconversion of data is a popular problem developer generally deal with. One can face a problem to convert tuple string to integer tuple. Let's discuss certain ways in which this task can be performed. Method #1 : Using tuple() + int() + replace() + split() The combination of above methods can be
7 min read
Python - Row-wise element Addition in Tuple Matrix
Sometimes, while working with Python tuples, we can have a problem in which we need to perform Row-wise custom elements addition in Tuple matrix. This kind of problem can have application in data domains. Let's discuss certain ways in which this task can be performed.Input : test_list = [[('Gfg', 3)
4 min read
Update Each Element in Tuple List - Python
The task of updating each element in a tuple list in Python involves adding a specific value to every element within each tuple in a list of tuples. This is commonly needed when adjusting numerical data stored in a structured format like tuples inside lists. For example, given a = [(1, 3, 4), (2, 4,
3 min read
Python - Convert Tuple to Tuple Pair
Sometimes, while working with Python Tuple records, we can have a problem in which we need to convert Single tuple with 3 elements to pair of dual tuple. This is quite a peculiar problem but can have problems in day-day programming and competitive programming. Let's discuss certain ways in which thi
10 min read
Python | Convert string tuples to list tuples
Sometimes, while working with Python we can have a problem in which we have a list of records in form of tuples in stringified form and we desire to convert them to a list of tuples. This kind of problem can have its occurrence in the data science domain. Let's discuss certain ways in which this tas
4 min read