Python | Multiply each element in a sublist by its index
Last Updated :
04 Mar, 2023
Given a list of lists, the task is to multiply each element in a sublist by its index and return a summed list. Given below are a few methods to solve the problem.
Method #1: Using Naive Method
Python3
import numpy as np
ini_list = [[ 3 , 4 , 7 ], [ 6 , 7 , 8 ], [ 10 , 7 , 5 ], [ 11 , 12 , 13 ]]
print ( "initial_list " , ini_list)
res = []
for sub_list in ini_list:
sublistsum = 0
for i, value in enumerate (sub_list):
sublistsum = sublistsum + i * value
res.append(sublistsum)
print ( "result" , res)
|
Output:
initial_list [[3, 4, 7], [6, 7, 8], [10, 7, 5], [11, 12, 13]]
result [18, 23, 17, 38]
Time complexity: O(n^2)
Auxiliary space: O(n)
Method #2: Using List comprehension
Python3
ini_list = [[ 3 , 4 , 7 ], [ 6 , 7 , 8 ], [ 10 , 7 , 5 ], [ 11 , 12 , 13 ]]
print ( "initial_list " , ini_list)
res = [ sum (i * j for i, j in enumerate (sublist))
for sublist in ini_list]
print ( "result" , res)
|
Output
initial_list [[3, 4, 7], [6, 7, 8], [10, 7, 5], [11, 12, 13]]
result [18, 23, 17, 38]
Time complexity: O(nm), where n is the number of sublists in the input list and m is the length of each sublist.
Auxiliary space: O(n), where n is the number of sublists in the input list. This is because the program uses list comprehension to create a new list of the same length as the input list.
Method #3: Using numpy
Python3
import numpy as np
ini_list = [[ 3 , 4 , 7 ], [ 6 , 7 , 8 ], [ 10 , 7 , 5 ], [ 11 , 12 , 13 ]]
print ("initial_list ", ini_list)
res = [np.arange( len (sublist)).dot(sublist) for sublist in ini_list]
print ("result", res)
|
Output:
initial_list [[3, 4, 7], [6, 7, 8], [10, 7, 5], [11, 12, 13]]
result [18, 23, 17, 38]
Time Complexity: The time complexity of the given code is O(n^2), where n is the number of elements in the list.
Auxiliary Space: The auxiliary space complexity of the code is O(n), where n is the number of elements in the list.
Method #4: Using Zip and List Comprehension
We can use the zip() function to solve the problem of multiplying each element in a sublist by its index and returning a summed list. We can use the range() function to generate the indices for each element in the sublist, and use the zip() function to pair each element with its index. Then, we can use a list comprehension to compute the sum of the products of the indices and elements.
Python3
ini_list = [[ 3 , 4 , 7 ], [ 6 , 7 , 8 ], [ 10 , 7 , 5 ], [ 11 , 12 , 13 ]]
print ( "initial_list" , ini_list)
res = [ sum (i * j for i, j in zip ( range ( len (sublist)), sublist))
for sublist in ini_list]
print ( "result" , res)
|
Output
initial_list [[3, 4, 7], [6, 7, 8], [10, 7, 5], [11, 12, 13]]
result [18, 23, 17, 38]
Time Complexity: The time complexity of this approach is O(n*m) where n is the number of sublists in the initial list and m is the length of each sublist. This is because we are iterating through each sublist and then iterating through each element of the sublist to calculate the dot product.
Auxiliary Space: The auxiliary space of this approach is O(n) where n is the number of sublists in the initial list. This is because we are creating a new list (res) to store the dot product of each sublist.
Share your thoughts in the comments
Please Login to comment...