[Tutor] Simple way to compare Two lists
Kent Johnson
kent37 at tds.net
Fri Aug 10 14:11:47 CEST 2007
Tom Fitzhenry wrote:
> On Fri, Aug 10, 2007 at 02:54:44AM -0700, Jaggo wrote:
>> Can anyone think of any better way?
>
> If SmallList and BigList are sorted (in order), there is a faster method:
>
> def IsAPartOfList(SmallList,BigList):
> for i in BigList:
> for j in SmallList:
> if i==j:
> return true
> if i>j:
> break
> return false
>
> (I'm not sure how encouraged using break statements are, so wait for a tutor to
> answer)
break is fine! If the list you are searching is sorted you can use the
bisect module to do a binary search instead of the linear search above.
> If one list is already sorted but the other isn't, it may still be faster to
> sort the unsorted list then use the method above.
I don't think BigList has to be sorted in the above algorithm. If both
lists are sorted I suppose you could write it like a merge sort, walking
along both lists looking for a match.
Kent
More information about the Tutor
mailing list