This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Find (Start:End) Positions That Sublists Occur Within A List . Python

If one had a long list of numbers:

example=['130','90','150','123','133','120','160','45','67','55','34']

and sub lists within the list like

sub_lists=[['130','90','150'],['90','150'],['120','160','45','67']]

how would you generate a function that takes these sublists and gives you the positions that they occurred in the original string? to get the results:

results=[[0-2],[1-2],[5-8]]

I was trying something along the lines of

example=['130','90','150','123','133','120','160','45','67','55','34']

sub_lists=[['130','90','150'],['90','150'],['120','160','45','67']]

for p in range(len(example)):
    for lists in sub_lists:
        if lists in example:
            print p

but that was not working?

python list

As it stands, this is a basic Python programming question, better suited to stackoverflow.com. Is there relevance to a bioinformatics problem?

agreed, closed because no obvious relation to bioinformatics

1 answer

I agree with Neil about it being basic programming question. A lot of these algorithm questions can be solved pretty easily if you just read up on the python native functions. For example, you can use the list.index(value) method to find index of a value in a list:

example=['130','90','150','123','133','120','160','45','67','55','34']
sub_lists=[['130','90','150'],['90','150'],['120','160','45','67']]
result = []
for sub in sub_lists:
    result.append([example.index(sub[0]),example.index(sub[-1])])
print result

Log in to answer this question.