Python-Multiply each element in a sublist by its index

In Python, there are different approaches to multiplying each element in a sublist by its index. This task involves iterating over the sublists, accessing the elements and their corresponding indices, and performing the multiplication operation. Two common approaches to achieve this are using a for loop and utilizing the NumPy library. Each approach offers advantages in terms of code simplicity, efficiency, and readability.

Understanding the Task

When we multiply each element in a sublist by its index, we're performing the following operation ?

  • For sublist at index 0: Each element is multiplied by 0

  • For sublist at index 1: Each element is multiplied by 1

  • For sublist at index 2: Each element is multiplied by 2

This means the first sublist will always result in zeros, while subsequent sublists will have their elements scaled by their position in the main list.

Using a For Loop

The first approach uses nested loops to iterate through sublists and multiply each element by the sublist's index ?

Algorithm

  • Define a function that takes a list of sublists as input

  • Create an empty list to store results

  • Use enumerate() to iterate over each sublist with its index

  • For each sublist, multiply every element by the sublist's index

  • Append the modified sublist to results

  • Return the results list

Example

def multiply_by_index(sublists):
    results = []
    for i, sublist in enumerate(sublists):
        multiplied_sublist = []
        for element in sublist:
            multiplied_sublist.append(element * i)
        results.append(multiplied_sublist)
    return results

# Example usage
sublists = [[7, 2, 8], [4, 5, 6], [3, 8, 9]]
result = multiply_by_index(sublists)
print("Original:", sublists)
print("Result:", result)
Original: [[7, 2, 8], [4, 5, 6], [3, 8, 9]]
Result: [[0, 0, 0], [4, 5, 6], [6, 16, 18]]

Using List Comprehension

A more concise approach uses list comprehension for the same operation ?

def multiply_by_index_compact(sublists):
    return [[element * i for element in sublist] 
            for i, sublist in enumerate(sublists)]

# Example usage
sublists = [[7, 2, 8], [4, 5, 6], [3, 8, 9]]
result = multiply_by_index_compact(sublists)
print("Result:", result)
Result: [[0, 0, 0], [4, 5, 6], [6, 16, 18]]

Using NumPy

NumPy provides an efficient solution for array operations using vectorized operations ?

Algorithm

  • Import the NumPy library

  • Convert the sublists to a NumPy array

  • Create an index array using np.arange()

  • Use broadcasting to multiply sublists with indices

  • Convert the result back to a nested list

Example

import numpy as np

def multiply_by_index_numpy(sublists):
    sublists_array = np.array(sublists)
    indices = np.arange(len(sublists))
    multiplied_array = sublists_array * indices[:, np.newaxis]
    return multiplied_array.tolist()

# Example usage
sublists = [[7, 2, 8], [4, 5, 6], [3, 8, 9]]
result = multiply_by_index_numpy(sublists)
print("Result:", result)
Result: [[0, 0, 0], [4, 5, 6], [6, 16, 18]]

Comparison

Method Readability Performance Memory Usage
For Loop High Slow for large data Low
List Comprehension Medium Faster than loops Low
NumPy Medium Fastest for large data Higher (array overhead)

Conclusion

Use for loops for simple cases and maximum readability. Choose NumPy for large datasets requiring optimal performance. List comprehension offers a good balance between conciseness and performance for medium-sized data.

Updated on: 2026-03-27T14:20:32+05:30

781 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements