John Henry schrieb: > If I have a list of say, 10 elements and I need to slice it into > irregular size list, I would have to create a bunch of temporary > variables and then regroup them afterwords, like: > > # Just for illustration. Alist can be any existing 10 element list > a_list=("",)*10 > (a,b,c1,c2,c3,d1,d2,d3,d4,d5)=a_list > alist=(a,) > blist=(b,) > clist=(c1,c2,c3) > dlist=(d2,d3,d4,d5) > > That obviously work but do I *really* have to do that? > > BTW: I know you can do: > alist=a_list[0] > blist=a_list[1] > clist=a_list[2:5] > dlist=a_list[5:] > > but I don't see that it's any better. > > Can I say something to the effect of: > > (a,b,c[0:2],d[0:5])=a_list # Obviously this won't work > > ?? > > I am asking this because I have a section of code that contains *lots* > of things like this. It makes the code very unreadable. > > Thanks, >
I had a little bit of fun while writing this: itemList = (a,b,c1,c2,c3,d1,d2,d3,d4,d5) and itemList2 = (a1,a2,a3,b,c,d1,d2,d3,d4,d5) the next time. def getSlices(aCount, bCount, cCount, dCount, items): a,b,c,d = (items[0:aCount], items[aCount:aCount+bCount], items[aCount+bCount:aCount+bCount+cCount], item[aCount+bCount+cCount:aCount+bCount+cCount+dCount]) return list(a),list(b),list(c),list(d) >>>a,b,c,d = getSlices(1,1,3,5,itemList) >>>print a,b,c,d ['a'] ['b'] ['c1', 'c2', 'c3'] ['d1', 'd2', 'd3', 'd4', 'd5'] >>>a,b,c,d = getSlices(3,1,1,0,itemList2) >>>print a,b,c,d ['a1', 'a2', 'a3'] ['b'] ['c'] [] %-) Thomas -- http://mail.python.org/mailman/listinfo/python-list