On 8/05/2006 10:45 PM, [EMAIL PROTECTED] wrote: > The code below works fine, but it is less than nice to look at and > somewhat long winded. Is there a better way to do the docstring task? > This is the first working version, and can proabably be "compacted" a > bit (list comprehensions etc) but I am looking for a better basic > approach. Any help much appreciated :) > > from itertools import islice > def chopupmoves(movelist): > '''creates a list of 3 lists from one list, that should all have > (length of movelist)/3 length, with any remainder getting added to the > third list''' > outputlist = [[],[],[]] > > parlen = int(len(movelist)/3) > if parlen < 3: > parlen = 3 What's this for? It causes weird things to happen with short lists.
> > stoplist=[0];exit = 0 > while exit < len(movelist): > stoplist.append(exit+parlen) > exit = exit + parlen > while len(stoplist) > 4: > stoplist.pop(len(stoplist)-1) > stoplist[-1]=len(movelist) > > for x in range(len(stoplist)-1): > for i in islice(movelist,stoplist[x],stoplist[x+1],1): > outputlist[x].append(i) > return outputlist > movelist = [1,2,3,4,5,6,7,8,9,10,11] > print chopupmoves(movelist) > Unless I've totally misunderstood your spec, you don't need all that islice and stoplist stuff. def chopupmoves2(movelist): parlen = len(movelist) // 3 return [movelist[:parlen], movelist[parlen:parlen*2], movelist[parlen*2:]] for k in range(13): mlist = range(k) print print "v1", chopupmoves(mlist) print "v2", chopupmoves2(mlist) -- http://mail.python.org/mailman/listinfo/python-list