SpreadTooThin wrote: > SpreadTooThin wrote: > > Simon Brunning wrote: > > > On 10/16/06, Simon Brunning <[EMAIL PROTECTED]> wrote: > > > > >>> a = [1,2,3,4,5,6,7,8,9,10] > > > > >>> a.sort(key=lambda item: (((item-1) %3), item)) > > > > >>> a > > > > [1, 4, 7, 10, 2, 5, 8, 3, 6, 9] > > > > > > Re-reading the OP's post, perhaps sorting isn't what's required: > > > > > > >>> a[::3] + a[1::3] + a[2::3] > > > [1, 4, 7, 10, 2, 5, 8, 3, 6, 9] > > > > > > -- > > > Cheers, > > > Simon B > > > [EMAIL PROTECTED] > > > http://www.brunningonline.net/simon/blog/ > > > > > Ok so this is what I got.. but there is an odd side effect: > > > > def reslice(series): > > series.sort() > > i = 1 > > newseries = series[::3] > > while(1): > > c = series[i::3] > > if len(c) >= 3: > > newseries = newseries + c > > else: > > break > > i = i + 1 > > return newseries > > > > a = [2,1,4,3,6,5,8,7,10,9] > > b = reslice(a) > > print b > > >>> [1, 4, 7, 10, 2, 5, 8, 3, 6, 9, 4, 7, 10] > > > > I have one extra 10 that I shouldn't...
Actually, you have an extra 4,7,10. > > > I think my loop termination is incorrect... > maybe I should just stop when my new series size is the same size as > the original? You can do this automatically (and pass the size of the desired sublist grouping also). def strange(n,d): """ n list to sort d sublist length """ LoL = [] for i in xrange(d): LoL.append(n[i::d]) print LoL out = [] for i in LoL: out.extend(i) return out a = [1,2,3,4,5,6,7,8,9,10] b = [1,3,5,7,11,13,17,19,23,29] c = [1,2,3,4,4,5,6,7,8,9,10] d = [1,2] print a test = strange(a,3) print test print print a test = strange(a,4) print test print print a test = strange(a,5) print test print print b test = strange(b,3) print test print print c test = strange(c,3) print test print print d test = strange(d,5) print test print ## [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ## [[1, 4, 7, 10], [2, 5, 8], [3, 6, 9]] ## [1, 4, 7, 10, 2, 5, 8, 3, 6, 9] ## ## [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ## [[1, 5, 9], [2, 6, 10], [3, 7], [4, 8]] ## [1, 5, 9, 2, 6, 10, 3, 7, 4, 8] ## ## [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ## [[1, 6], [2, 7], [3, 8], [4, 9], [5, 10]] ## [1, 6, 2, 7, 3, 8, 4, 9, 5, 10] ## ## [1, 3, 5, 7, 11, 13, 17, 19, 23, 29] ## [[1, 7, 17, 29], [3, 11, 19], [5, 13, 23]] ## [1, 7, 17, 29, 3, 11, 19, 5, 13, 23] ## ## [1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10] ## [[1, 4, 6, 9], [2, 4, 7, 10], [3, 5, 8]] ## [1, 4, 6, 9, 2, 4, 7, 10, 3, 5, 8] ## ## [1, 2] ## [[1], [2], [], [], []] ## [1, 2] -- http://mail.python.org/mailman/listinfo/python-list