Given two lists of strings, where first list contains all elements of second list, the task is to replace every element in second list with index of elements in first list.
Method #1: Using Iteration
Python3
# Python code to replace every element # in second list with index of first element. # List Initialization Input1 = [ 'cut' , 'god' , 'pass' ] Input2 = [ 'god' , 'cut' , 'cut' , 'cut' , 'god' , 'pass' , 'cut' , 'pass' ] # List Initialization Output = [] # Using iteration for x in Input2: for y in Input1: if x = = y: Output.append(Input1.index(y)) # Printing output print ( "initial 2 list are" ) print (Input1, "\n" , Input2) print ( "Second list after replacement is:" , Output) |
initial 2 list are ['cut', 'god', 'pass'] ['god', 'cut', 'cut', 'cut', 'god', 'pass', 'cut', 'pass'] Second list after replacement is: [1, 0, 0, 0, 1, 2, 0, 2]
Time Complexity : O(n*m)
Auxiliary Space : O(n+m), where n is length of Input1 list and m is length of Input2 list.
Method #2: Using List comprehension
Python3
# Python code to replace every element # in second list with index of first element. # List initialization Input1 = [ 'cut' , 'god' , 'pass' ] # using enumerate temp = {y:x for x, y in enumerate (Input1)} # List initialization Input2 = [ 'god' , 'cut' , 'cut' , 'cut' , 'god' , 'pass' , 'cut' , 'pass' ] # Using list comprehension Output = [temp.get(elem) for elem in Input2] # Printing output print ( "initial 2 list are" ) print (Input1, "\n" , Input2) print ( "Second list after replacement is:" , Output) |
initial 2 list are ['cut', 'god', 'pass'] ['god', 'cut', 'cut', 'cut', 'god', 'pass', 'cut', 'pass'] Second list after replacement is: [1, 0, 0, 0, 1, 2, 0, 2]
Time Complexity: O(n)
Auxiliary Space: O(n)
Method #3 : Using map
Python3
# Python code to replace every element # in second list with index of first element. # List initialization Input1 = [ 'cut' , 'god' , 'pass' ] # List initialization Input2 = [ 'god' , 'cut' , 'cut' , 'cut' , 'god' , 'pass' , 'cut' , 'pass' ] elem = {k: i for i, k in enumerate (Input1)} Output = list ( map (elem.get, Input2)) # Printing output print ( "initial 2 list are" ) print (Input1, "\n" , Input2) print ( "Second list after replacement is:" , Output) |
initial 2 list are ['cut', 'god', 'pass'] ['god', 'cut', 'cut', 'cut', 'god', 'pass', 'cut', 'pass'] Second list after replacement is: [1, 0, 0, 0, 1, 2, 0, 2]
Method #4: Using dictionary comprehension
This method uses a dictionary to store the indices of the elements in input1. It then uses a list comprehension to iterate through input2 and replace each element with its index in the dictionary. This is a simple and efficient way to solve the task.
Python3
def replace_elements(input1, input2): # Create a dictionary with keys from input1 and values as the indices dictionary = {input1[i]: i for i in range ( len (input1))} # Use a list comprehension to replace each element in input2 with its corresponding index in the dictionary return [dictionary[elem] for elem in input2] #initialization Input1 = [ 'cut' , 'god' , 'pass' ] Input2 = [ 'god' , 'cut' , 'cut' , 'cut' , 'god' , 'pass' , 'cut' , 'pass' ] Output = replace_elements(Input1, Input2) #printing result print (f "Input1: {Input1}" ) print (f "Input2: {Input2}" ) print (f "Output: {Output}" ) #This code is contributed by Edula Vinay Kumar Reddy |
Input1: ['cut', 'god', 'pass'] Input2: ['god', 'cut', 'cut', 'cut', 'god', 'pass', 'cut', 'pass'] Output: [1, 0, 0, 0, 1, 2, 0, 2]
Time complexity: O(n) where n is the length of input2
Auxiliary Space: O(n) to store the dictionary and output list
Method #5: Using Regular expressions
Python3
import re Input1 = [ 'cut' , 'god' , 'pass' ] Input2 = [ 'god' , 'cut' , 'cut' , 'cut' , 'god' , 'pass' , 'cut' , 'pass' ] # Compile a regular expression pattern to match elements in Input1 pattern = re. compile ( "|" .join(Input1)) # Use the re.finditer function to find all matches in Input2 matches = [m.group() for m in re.finditer(pattern, " " .join(Input2))] # Replace elements in Input2 with their indices Output = [Input1.index(x) for x in matches] # Printing output print ( "initial 2 list are" ) print (Input1, "\n" , Input2) print ( "Second list after replacement is:" , Output) #This code is contributed by Vinay Pinjala. |
initial 2 list are ['cut', 'god', 'pass'] ['god', 'cut', 'cut', 'cut', 'god', 'pass', 'cut', 'pass'] Second list after replacement is: [1, 0, 0, 0, 1, 2, 0, 2]
Time complexity: O(n)
Auxiliary Space: O(n)
Method #6: Using enumerate() function
Use the built-in enumerate() function to iterate through the elements of Input2 along with their indices. Then, for each element in Input2, we can check if it exists in Input1 using the in operator. If it exists, we can append the index of the matching element in Input1 to the Output list.
Python3
# Python code to replace every element # in second list with index of first element. # List Initialization Input1 = [ 'cut' , 'god' , 'pass' ] Input2 = [ 'god' , 'cut' , 'cut' , 'cut' , 'god' , 'pass' , 'cut' , 'pass' ] # List Initialization Output = [] # Using enumerate() function for i, x in enumerate (Input2): if x in Input1: Output.append(Input1.index(x)) # Printing output print ( "initial 2 list are" ) print (Input1, "\n" , Input2) print ( "Second list after replacement is:" , Output) |
initial 2 list are ['cut', 'god', 'pass'] ['god', 'cut', 'cut', 'cut', 'god', 'pass', 'cut', 'pass'] Second list after replacement is: [1, 0, 0, 0, 1, 2, 0, 2]
Time Complexity: O(n^2), where n is the length of Input2.
Auxiliary Space: O(1), as we are only using the Output list to store the indices.