Is there an easier way to express this list slicing?
Thomas Ploch
Thomas.Ploch at gmx.net
Thu Nov 30 15:34:11 EST 2006
John Henry schrieb:
> Thomas Ploch wrote:
> <snip>
>> 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.
>>
>
> Huh? What's a,b,....d5?
>
John Henry schrieb:
> > Thomas Ploch wrote:
> > <snip>
>> >> 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.
>> >>
> >
> > Huh? What's a,b,....d5?
> >
Can be any object, as you had in your example in your mail:
>>>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)
>> 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])
>
> You meant "items" here, right?
>
>> 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
>
More information about the Python-list
mailing list