Let's say that we have the following list:
sequence = ['2', '4', '1', '2', '3', '4', '2', '4', '2', '4', '4']
#indices     0    1    2    3    4    5    6    7    8    9    10
Next, we have the following list:
key_list = ['2', '2', '4']
Now, I want to extract all the possible sub-lists from sequence that preserve the order of keylist, i.e. its indices. 
Let me explain by example. So, for sequence, all the possible sub-lists of indices which preserve the order of key_list are:
[0, 3, 5]
[0, 3, 7]
[0, 3, 9]
[0, 3, 10]
[0, 6, 7]
[0, 6, 9]
[0, 6, 10]
[0, 8, 9]
[0, 8, 10]
[3, 6, 7]
[3, 6, 9]
[3, 6, 10]
[3, 8, 9]
[3, 8, 10]
[6, 8, 9]
[6, 8, 10]
Any suggestions?
EDIT: I am working with a big dataset and I have to perform this for every line of the file, so I am looking for a very optimal way to do this, by avoiding brute-force approach (making all possible combinations of the sequence)
P.S. I don't know if the title of the question is appropriate, feel free to change it if you have a better one.