Open In App

Python – Multiply K to every Nth element

Improve
Improve
Like Article
Like
Save
Share
Report

We generally wish to employ a particular function to all the elements in a list. But sometimes, according to requirement we would wish to employ a particular functionality to certain elements of the list, basically to every Nth element in list. Let’s discuss certain ways in which this can be performed. 

Method #1 : Using list comprehension + enumerate() The functionality of getting every Nth number of list can be done with the help of list comprehension and enumerate function helps in the iteration of the whole list. 

Python3




# Python3 code to demonstrate
# Multiply K to every Nth element
# using list comprehension + enumerate()
 
# initializing list
test_list = [1, 4, 5, 6, 7, 8, 9, 12]
 
# printing the original list
print ("The original list is : " + str(test_list))
 
# initializing N
N = 3
 
# initializing K
K = 2
 
# using list comprehension + enumerate()
# Multiply K to every Nth element
res = [i * K if j % N == 0 else i for j, i in enumerate(test_list)]
 
# printing result
print ("The list after multiplying K to every Nth element : " + str(res))


Output : 

The original list is : [1, 4, 5, 6, 7, 8, 9, 12]
The list after multiplying K to every Nth element : [2, 4, 5, 12, 7, 8, 18, 12]

Time complexity: O(n) where n is the length of the input list.
Auxiliary space: O(n) as we are creating a new list of the same length as the input list.

Method #2 : Using list comprehension + list slicing Above mentioned functions can help to perform these tasks. The list comprehension does the task of iteration in list and list slicing does the extraction of every Nth element. 

Python3




# Python3 code to demonstrate
# Multiply K to every Nth element
# using list comprehension + list slicing
 
# initializing list
test_list = [1, 4, 5, 6, 7, 8, 9, 12]
 
# printing the original list
print ("The original list is : " + str(test_list))
 
# initializing N
N = 3
 
# initializing K
K = 2
 
# using list comprehension + list slicing
# Multiply K to every Nth element
test_list[0::3] = [i * K for i in test_list[0 :: N]]
 
# printing result
print ("The list after multiplying K to every Nth element : "
                                            + str(test_list))


Output : 

The original list is : [1, 4, 5, 6, 7, 8, 9, 12]
The list after multiplying K to every Nth element : [2, 4, 5, 12, 7, 8, 18, 12]

Time complexity: O(n), where n is the length of the input list test_list. 
Auxiliary space complexity: O(1),

Method #3: Using For Loop

Python3




#Python3 code to demonstrate
#Multiply K to every Nth element
#using for loop
#initializing list
test_list = [1, 4, 5, 6, 7, 8, 9, 12]
 
#printing the original list
print ("The original list is : " + str(test_list))
 
#initializing N
N = 3
 
#initializing K
K = 2
 
#using for loop
for i in range(0, len(test_list), N):
  test_list[i] = test_list[i] * K
 
#printing result
print ("The list after multiplying K to every Nth element : " + str(test_list))


Output

The original list is : [1, 4, 5, 6, 7, 8, 9, 12]
The list after multiplying K to every Nth element : [2, 4, 5, 12, 7, 8, 18, 12]

Time complexity: O(n)
Auxiliary space: O(1)

Method#4: Using Recursive method.

Python3




def multiply_nth_element(test_list, N, K, index=0):
    if index >= len(test_list):
        return test_list
    test_list[index] *= K
    return multiply_nth_element(test_list, N, K, index + N)
 
#initializing list
test_list = [1, 4, 5, 6, 7, 8, 9, 12]
 
#printing the original list
print ("The original list is : " + str(test_list))
 
#initializing N
N = 3
 
#initializing K
K = 2
 
result = multiply_nth_element(test_list, N, K)
 
#printing result
print ("The list after multiplying K to every Nth element : " + str(result))
#this code contributed by tvsk


Output

The original list is : [1, 4, 5, 6, 7, 8, 9, 12]
The list after multiplying K to every Nth element : [2, 4, 5, 12, 7, 8, 18, 12]

Time Complexity: O(n)
Auxiliary Space: O(n)

Method #5: Using numpy array

  • Import numpy library and initialize the original list, N and K values.
  • Convert the original list to numpy array.
  • Use numpy’s indexing feature to select the Nth elements and multiply them by K.
  • Convert the modified numpy array back to a list.
  • Print the original list after updating the Nth element.

Python3




#Python3 code to demonstrate
#Multiply K to every Nth element
#using numpy array
import numpy as np
 
#initializing list
test_list = [1, 4, 5, 6, 7, 8, 9, 12]
 
#printing the original list
print ("The original list is : " + str(test_list))
 
#initializing N
N = 3
 
#initializing K
K = 2
 
#converting list to numpy array
np_array = np.array(test_list)
 
#multiplying every Nth element by K using numpy indexing
np_array[::N] = np_array[::N] * K
 
#converting numpy array back to list
test_list = np_array.tolist()
 
#printing result
print ("The list after multiplying K to every Nth element : " + str(test_list))


Output:

The original list is : [1, 4, 5, 6, 7, 8, 9, 12]
The list after multiplying K to every Nth element : [2, 4, 5, 12, 7, 8, 18, 12]

Time complexity: O(n)
Auxiliary space: O(n)



Last Updated : 16 May, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads