finding all sublists of list2 that are identical to list1

Klaus Neuner klaus_neuner82 at yahoo.de
Mon Feb 9 15:59:35 CET 2004


Hello, 

the function given below returns all indexes of list2 where a sublist
of list2 that is identical to list1 begins.

As I will need this function quite often, I would like to know if more
experienced programmers would agree with the way I defined the
function:

- Is there a more efficient way to do it? (Apart from building
automata.)
- Is there a more elegant/Pythonic way to write the function?

Klaus


def sublist(list1, list2):
    if list1 == list2:
        return [0]
    elif len(list1) > len(list2):
        return []
    else:
        result = []
        shift = 0
        i = 0
        while shift <= len(list2)-len(list1):
            if list1[i] == list2[shift+i]:
                if i == len(list1)-1:
                    result.append(shift)
                    i = 0
                    shift += 1
                else:
                    i += 1
            else:
                i = 0
                shift += 1
        return result



More information about the Python-list mailing list