I have a list input
:
[1, 2, 4, 3, 5, 7, 5, 3, 8, 3, 8, 5, 8, 5, 9, 5, 7, 5, 7, 4, 9, 7, 5, 7, 4, 7, 4, 7, 8, 9, 7, 5, 7, 5, 4, 9, 3, 4, 8, 4, 8, 5, 3, 5, 4, 7, 3, 7, 3, 1, 2, 7, 1, 7, 2, 1]
I need to check if the elements of a lookup_list
[1,2,3,4,5,7,8,9,5,4,3,2,1]
are present in the above list in a spread out manner in the same sequence.
This will illustrate what I am trying to say:
[1, 2, 4, 3, 5, 7, 5, 3, 8, 3, 8, 5, 8, 5, 9, 5, 7, 5, 7, 4, 9, 7, 5, 7, 4, 7, 4, 7, 8, 9, 7, 5, 7, 5, 4, 9, 3, 4, 8, 4, 8, 5, 3, 5, 4, 7, 3, 7, 3, 1, 2, 7, 1, 7, 2, 1]
The numbers in bold are the numbers from the lookup_list
present in the same order in the input
list, but with other irrelevant items in between as well.
Is there any way I can check for this?
This is the method I tried:
count = 0
a = 0
indices = []
for item in list:
idx = -1
if count < len(input_list):
idx = list.index(input_list[count])
if idx != -1:
a = a +len(list[:idx])
list = list[idx:]
indices.append(a + idx)
count = count +1
print(indices)
but it gave me the following result:
[0, 2, 5, 35, 25, 24, 33, 30, 33, 37, 38, 64, 54]
The issue is, the order of the lookup_list
is not maintained in this method.