Python | Tuple multiplication

Last Updated : 23 Apr, 2023

Sometimes, while working with records, we can have a problem in which we may need to perform multiplication 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 combination of above functions can be used to perform this task. In this, we perform the task of multiplication using generator expression and mapping index of each tuple is done by zip().

Python3

 `# Python3 code to demonstrate working of` `# Tuple multiplication` `# using zip() + generator expression`   `# initialize tuples` `test_tup1 ``=` `(``10``, ``4``, ``5``, ``6``)` `test_tup2 ``=` `(``5``, ``6``, ``7``, ``5``)`   `# printing original tuples` `print``(``"The original tuple 1 : "` `+` `str``(test_tup1))` `print``(``"The original tuple 2 : "` `+` `str``(test_tup2))`   `# Tuple multiplication` `# using zip() + generator expression` `res ``=` `tuple``(ele1 ``*` `ele2 ``for` `ele1, ele2 ``in` `zip``(test_tup1, test_tup2))`   `# printing result` `print``(``"The multiplied tuple : "` `+` `str``(res))`

Output

```The original tuple 1 : (10, 4, 5, 6)
The original tuple 2 : (5, 6, 7, 5)
The multiplied tuple : (50, 24, 35, 30)```

Time complexity: O(n), where n is the length of the smaller tuple.
Auxiliary space: O(n), where n is the length of the generated result tuple.

Method #2 : Using map() + mul The combination of above functionalities can also perform this task. In this, we perform the task of extending logic of multiplication using mul and mapping is done by map().

Python3

 `# Python3 code to demonstrate working of` `# Tuple multiplication` `# using map() + mul` `from` `operator ``import` `mul`   `# initialize tuples` `test_tup1 ``=` `(``10``, ``4``, ``5``, ``6``)` `test_tup2 ``=` `(``5``, ``6``, ``7``, ``5``)`   `# printing original tuples` `print``(``"The original tuple 1 : "` `+` `str``(test_tup1))` `print``(``"The original tuple 2 : "` `+` `str``(test_tup2))`   `# Tuple multiplication` `# using map() + mul` `res ``=` `tuple``(``map``(mul, test_tup1, test_tup2))`   `# printing result` `print``(``"The multiplied tuple : "` `+` `str``(res))`

Output

```The original tuple 1 : (10, 4, 5, 6)
The original tuple 2 : (5, 6, 7, 5)
The multiplied tuple : (50, 24, 35, 30)```

Time complexity: O(n), where n is the length of the tuples test_tup1 and test_tup2, as the map function iterates through each element of the tuples once.
Auxiliary space: O(n) as well, as it creates a new tuple to store the multiplied result using the map function.

Method #3: Using for loop

Python3

 `# Python3 code to demonstrate working of` `# Tuple multiplication`   `# initialize tuples` `test_tup1 ``=` `(``10``, ``4``, ``5``, ``6``)` `test_tup2 ``=` `(``5``, ``6``, ``7``, ``5``)`   `# printing original tuples` `print``(``"The original tuple 1 : "` `+` `str``(test_tup1))` `print``(``"The original tuple 2 : "` `+` `str``(test_tup2))`   `# Tuple multiplication` `res``=``[]` `for` `i ``in` `range``(``0``,``len``(test_tup1)):` `    ``res.append(test_tup1[i]``*``test_tup2[i])` `res``=``tuple``(res)`   `# printing result` `print``(``"The multiplied tuple : "` `+` `str``(res))`

Output

```The original tuple 1 : (10, 4, 5, 6)
The original tuple 2 : (5, 6, 7, 5)
The multiplied tuple : (50, 24, 35, 30)```

Method #3: Using numpy

Note: install numpy module using command “pip install numpy”

Python3

 `import` `numpy as np`   `# initialize tuples` `test_tup1 ``=` `(``10``, ``4``, ``5``, ``6``)` `test_tup2 ``=` `(``5``, ``6``, ``7``, ``5``)` `# printing original tuples` `print``(``"The original tuple 1 : "` `+` `str``(test_tup1))` `print``(``"The original tuple 2 : "` `+` `str``(test_tup2))` `# convert tuples to numpy arrays` `arr1 ``=` `np.array(test_tup1)` `arr2 ``=` `np.array(test_tup2)`   `# perform element-wise multiplication` `res ``=` `arr1 ``*` `arr2`   `# convert result back to tuple` `res ``=` `tuple``(res)`   `# printing result` `print``(``"The multiplied tuple : "` `+` `str``(res))`   `#This code is contributed by Edula Vinay Kumar Reddy`

Output:

```The original tuple 1 : (10, 4, 5, 6)
The original tuple 2 : (5, 6, 7, 5)
The multiplied tuple : (50, 24, 35, 30)```

Time complexity: O(n) where n is the number of elements in the tuple. This is because numpy’s array multiplication is implemented in C and is highly optimized. The Auxiliary space: O(n) as it requires an additional numpy array to store the result.

Method 4 :  using a list comprehension.

1. Initialize two tuples test_tup1 and test_tup2 with the values (10, 4, 5, 6) and (5, 6, 7, 5), respectively.
2. Define a list comprehension [x * y for x, y in zip(test_tup1, test_tup2)] that iterates through both tuples in parallel using the zip function, multiplies the corresponding elements of each tuple, and returns a list of the results.
3. Convert the resulting list into a tuple using the tuple function and assign it to the variable res.
4. Print the value of res, which is (50, 24, 35, 30).

Python3

 `test_tup1 ``=` `(``10``, ``4``, ``5``, ``6``)` `test_tup2 ``=` `(``5``, ``6``, ``7``, ``5``)`   `res ``=` `tuple``([x ``*` `y ``for` `x, y ``in` `zip``(test_tup1, test_tup2)])`   `print``(res)  ``# (50, 24, 35, 30)`

Output

```(50, 24, 35, 30)
```

The time complexity O(n), where n is the length of the tuples.

The space complexity : O(n) .

Previous
Next