Tuple Division in Python
Sometimes, while working with records, we can have a problem in which we may need to perform mathematical division operation across 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 combination of above functions can be used to perform this task. In this, we perform the task of division using generator expression and mapping index of each tuple is done by zip().
Python3
# Python3 code to demonstrate working of # Tuple division # using zip() + generator expression # initialize tuples test_tup1 = ( 10 , 4 , 6 , 9 ) test_tup2 = ( 5 , 2 , 3 , 3 ) # printing original tuples print ("The original tuple 1 : " + str (test_tup1)) print ("The original tuple 2 : " + str (test_tup2)) # Tuple division # using zip() + generator expression res = tuple (ele1 / / ele2 for ele1, ele2 in zip (test_tup1, test_tup2)) # printing result print ("The divided tuple : " + str (res)) |
The original tuple 1 : (10, 4, 6, 9) The original tuple 2 : (5, 2, 3, 3) The divided tuple : (2, 2, 2, 3)
Time Complexity: O(n), where n is the length of the lists.
Auxiliary Space: O(n)
Method #2 : Using map() + floordiv The combination of above functionalities can also perform this task. In this, we perform the task of extending logic of division using floordiv and mapping is done by map().
Python3
# Python3 code to demonstrate working of # Tuple division # using map() + floordiv from operator import floordiv # initialize tuples test_tup1 = ( 10 , 4 , 6 , 9 ) test_tup2 = ( 5 , 2 , 3 , 3 ) # printing original tuples print ("The original tuple 1 : " + str (test_tup1)) print ("The original tuple 2 : " + str (test_tup2)) # Tuple division # using map() + floordiv res = tuple ( map (floordiv, test_tup1, test_tup2)) # printing result print ("The divided tuple : " + str (res)) |
The original tuple 1 : (10, 4, 6, 9) The original tuple 2 : (5, 2, 3, 3) The divided tuple : (2, 2, 2, 3)
Time complexity: O(n), where n is the length of the tuple. The code uses the map function which has a time complexity of O(n).
Auxiliary space: O(n) since a new tuple is created to store the result of the division of the elements of the original tuples.
Method #3 : Using for loop and tuple() method
Python3
# Python3 code to demonstrate working of # Tuple division # initialize tuples test_tup1 = ( 10 , 4 , 6 , 9 ) test_tup2 = ( 5 , 2 , 3 , 3 ) # printing original tuples print ( "The original tuple 1 : " + str (test_tup1)) print ( "The original tuple 2 : " + str (test_tup2)) # Tuple division res = [] for i in range ( 0 , len (test_tup1)): res.append(test_tup1[i] / / test_tup2[i]) res = tuple (res) # printing result print ( "The divided tuple : " + str (res)) |
The original tuple 1 : (10, 4, 6, 9) The original tuple 2 : (5, 2, 3, 3) The divided tuple : (2, 2, 2, 3)
Method #4 : Using for loop and zip():
Python3
test_tup1 = ( 10 , 4 , 6 , 9 ) test_tup2 = ( 5 , 2 , 3 , 3 ) print ( "The original tuple 1 : " , test_tup1) print ( "The original tuple 2 : " , test_tup2) res = [] for ele1, ele2 in zip (test_tup1, test_tup2): res.append(ele1 / / ele2) res = tuple (res) print ( "The divided tuple : " , res) #This code is contributed by Jyothi pinjala |
The original tuple 1 : (10, 4, 6, 9) The original tuple 2 : (5, 2, 3, 3) The divided tuple : (2, 2, 2, 3)
Time Complexity: O(n)
Auxiliary Space: O(n)
Method 5: Using list comprehension + zip()
Use a list comprehension with a generator expression to compute the floor division of corresponding elements from both input tuples. The zip() function can be used to iterate over both tuples in parallel, and the resulting generator can be wrapped in the tuple() constructor to obtain the final result.
Python3
test_tup1 = ( 10 , 4 , 6 , 9 ) test_tup2 = ( 5 , 2 , 3 , 3 ) # Compute the floor division of corresponding elements # in the two tuples using a generator expression res = tuple (ele1 / / ele2 for ele1, ele2 in zip (test_tup1, test_tup2)) # Print the original tuples and the resulting tuple print ( "The original tuple 1 : " , test_tup1) print ( "The original tuple 2 : " , test_tup2) print ( "The divided tuple : " , res) |
The original tuple 1 : (10, 4, 6, 9) The original tuple 2 : (5, 2, 3, 3) The divided tuple : (2, 2, 2, 3)
Time Complexity: O(n), where n is the length of the input tuples.
Auxiliary Space: O(n)
Method #6: Using numpy’s floor_divide function
This method uses the numpy library’s floor_divide function to perform element-wise floor division of two tuples. The floor_divide function is optimized for numerical operations and can perform the operation more efficiently than regular Python code. However, using numpy requires additional memory usage as numpy arrays are stored in a different format than Python tuples.
Python3
import numpy as np test_tup1 = ( 10 , 4 , 6 , 9 ) test_tup2 = ( 5 , 2 , 3 , 3 ) # Compute the floor division of corresponding elements # in the two tuples using numpy's floor_divide function res = np.floor_divide(test_tup1, test_tup2) # Print the original tuples and the resulting tuple print ( "The original tuple 1 : " , test_tup1) print ( "The original tuple 2 : " , test_tup2) print ( "The divided tuple : " , res) |
Output:
The original tuple 1 : (10, 4, 6, 9) The original tuple 2 : (5, 2, 3, 3) The divided tuple : [2 2 2 3]
Time complexity: O(n), where n is the length of the tuples
Auxiliary space: O(n) due to the creation of a numpy array.
Please Login to comment...