Sometimes, while working with data, we might have a problem in which we need to replicate, i.e construct duplicates of tuples. This is an important application in many domains of computer programming. Let’s discuss certain ways in which this task can be performed.
Method #1 : Using * operator The multiplication operator can be used to construct the duplicates of a container. This also can be extended to tuples even though tuples are immutable.
Python3
# Python3 code to demonstrate working of # Repeating tuples N times # using * operator # initialize tuple test_tup = ( 1 , 3 ) # printing original tuple print ( "The original tuple : " + str (test_tup)) # initialize N N = 4 # Repeating tuples N times # using * operator res = ((test_tup, ) * N) # printing result print ( "The duplicated tuple elements are : " + str (res)) |
The original tuple : (1, 3) The duplicated tuple elements are : ((1, 3), (1, 3), (1, 3), (1, 3))
Method #2 : Using repeat() The internal function of itertools library, repeat() can be used to achieve the solution to the above problem.
Python3
# Python3 code to demonstrate working of # Repeating tuples N times # using repeat() from itertools import repeat # initialize tuple test_tup = ( 1 , 3 ) # printing original tuple print ( "The original tuple : " + str (test_tup)) # initialize N N = 4 # Repeating tuples N times # using repeat() res = tuple (repeat(test_tup, N)) # printing result print ( "The duplicated tuple elements are : " + str (res)) |
The original tuple : (1, 3) The duplicated tuple elements are : ((1, 3), (1, 3), (1, 3), (1, 3))
Method #3 : Using tuple() method and for loop
Python3
# Python3 code to demonstrate working of # Repeating tuples N times # initialize tuple test_tup = ( 1 , 3 ) # printing original tuple print ( "The original tuple : " + str (test_tup)) # initialize N N = 4 # Repeating tuples N times res = [] for i in range ( 0 ,N): res.append(test_tup) res = tuple (res) # printing result print ( "The duplicated tuple elements are : " + str (res)) |
The original tuple : (1, 3) The duplicated tuple elements are : ((1, 3), (1, 3), (1, 3), (1, 3))
4. Using list comprehension:
Python3 code to demonstrate working of Repeating tuples N times using list comprehension
Python3
# Python3 code to demonstrate working of # Repeating tuples N times # initialize tuple test_tup = ( 1 , 3 ) # printing original tuple print ( "The original tuple : " + str (test_tup)) # initialize N N = 4 # Repeating tuples N times res = [test_tup for i in range (N)] res = tuple (res) # printing result print ( "The duplicated tuple elements are : " + str (res)) #This code is contributed by Edula Vinay Kumar Reddy |
The original tuple : (1, 3) The duplicated tuple elements are : ((1, 3), (1, 3), (1, 3), (1, 3))
Time complexity: O(n)
Auxiliary space: O(n)
Method #5: Using map() and lambda
Python3
# Python3 code to demonstrate working of # Repeating tuples N times # initialize tuple test_tup = ( 1 , 3 ) # printing original tuple print ( "The original tuple : " + str (test_tup)) # initialize N N = 4 # Repeating tuples N times res = tuple ( map ( lambda x : test_tup, range (N))) # printing result print ( "The duplicated tuple elements are : " + str (res)) |
The original tuple : (1, 3) The duplicated tuple elements are : ((1, 3), (1, 3), (1, 3), (1, 3))
Time complexity: O(n)
Auxiliary space: O(n)
Method #6 : Using operator.mul()
Approach
- Append given tuple into a list
- Repeat the list by using operator.mul()
- Convert the list of tuples to tuple of tuples
- Display output tuple
Python3
# Python3 code to demonstrate working of # Repeating tuples N times # initialize tuple test_tup = ( 1 , 3 ) # printing original tuple print ( "The original tuple : " + str (test_tup)) # initialize N N = 4 # Repeating tuples N times import operator x = [test_tup] res = tuple (operator.mul(x,N)) # printing result print ( "The duplicated tuple elements are : " + str (res)) |
The original tuple : (1, 3) The duplicated tuple elements are : ((1, 3), (1, 3), (1, 3), (1, 3))
Time Complexity : O(N), where N is the input variable
Auxiliary Space : O(N), where N is the input variable
Method 7 : Use recursion
Here are the steps for this method:
Initialize the tuple test_tup.
Initialize the integer N.
Define a function repeat_tuple() that takes a tuple test_tup and an integer N.
If N is equal to 1, return the tuple test_tup.
Otherwise, concatenate the tuple test_tup with the result of calling repeat_tuple() with test_tup and N-1 as arguments.
Assign the final result to the variable res.
Print the result.
Python3
# initialize tuple test_tup = ( 1 , 3 ) # initialize N N = 4 # repeat tuples N times def repeat_tuple(test_tup, N): if N = = 1 : return (test_tup,) else : return (test_tup,) + repeat_tuple(test_tup, N - 1 ) res = repeat_tuple(test_tup, N) # print result print ( "The duplicated tuple elements are : " + str (res)) |
The duplicated tuple elements are : ((1, 3), (1, 3), (1, 3), (1, 3))
The time complexity of this method is O(N), as the function is called recursively N times.
The auxiliary space of this method is also O(N), as the size of the resulting tuple is N times the size of the original tuple.