On Sep 18, 3:24 pm, [EMAIL PROTECTED] wrote: > On Sep 9, 9:09 pm, "J. Cliff Dyer" <[EMAIL PROTECTED]> wrote: > > > > > On Tue, 2008-09-09 at 10:49 +0200, Bruno Desthuilliers wrote: > > > Matimus a écrit : > > > > On Sep 8, 12:32 am, Bruno Desthuilliers > > > > <[EMAIL PROTECTED]> wrote: > > > (snip) > > > >> >>> set(a).issubset(set(b)) > > > >> True > > > > > Just to clarify, doing it using sets is not going to preserve order OR > > > > number of elements that are the same. > > > > > That is: > > > > >>>> a = [1,1,2,3,4] > > > >>>> b = [4,5,3,7,2,6,1] > > > >>>> set(a).issubset(set(b)) > > > > True > > > > > This will return True if b contains at least on of each element found > > > > in a. If the OP wanted to check that list `a` appeared in order > > > > somewhere in list `b` then sets won't work. > > > > Indeed, and I should have mentionned this myself. Thanks for this > > > reminder. > > > If preserving order is important, strings have many of the properties > > you're looking for, but it might take some work to figure out a suitable > > way to convert to a string. The problem is easier if you know something > > about the inputs. If all inputs are known to be numbers between 0 and > > 15, you can just do: > > > if ''.join(map(hex, a)) in ''.join(map(hex, b)): > > return True > > > Hmm... actually, with the '0x' prefix that hex() puts on numbers, I > > think this works for arbitrary integers. > > > Cheers, > > Cliff > > Hi, > > I looked inside this thread for my query which brought me the > following google search result > "Test if list contains another list - comp.lang.python | Google > Groups" > > But then I was disappointed to see the question asked was not exactly > right. Other programmers have already answered to the main question. > But what if you actually have to find out if a list has all its > element inside another list in the same order. For that I wrote the > code and that's what I came up with.. let me know if there are any > bugs in this code. > > #!C:\Python24 > > def findAllMatchingList(mainList, subList): > resultIndex = [] > globalIndex = 0 > for i in range(len(mainList)): > if i < globalIndex: > continue > globalIndex = i > increment = 0 > for j in range(len(subList)): > if mainList[globalIndex] == subList[j]: > globalIndex += 1 > increment += 1 > if j == (len(subList)-1): > resultIndex.append(globalIndex-increment) > else: > break > > return resultIndex > > if __name__ == "__main__": > #Test case > mL = [ 'a', 'b', 'c', 1, 2, 4, 1, 2, 1, 1, 1, 2, 9, 1, 1, 1, 2, 3, > 'a', 1, 2, 3, 4 ] > #mL = [ 'a', 'a', 'b', 1 ,2 ,3, 5, 6] > sL = [ 1, 2, 3 ] > result = findAllMatchingList( mL, sL ) > for i in result: > print str(i) > > Regards, > Gaurav.
-- http://mail.python.org/mailman/listinfo/python-list