Converting a flat list to a list of tuples
Bengt Richter
bokr at oz.net
Tue Nov 22 16:13:28 EST 2005
On 22 Nov 2005 07:42:31 -0800, "George Sakkis" <gsakkis at rutgers.edu> wrote:
>"Laurent Rahuel" wrote:
>
>> Hi,
>>
>> newList = zip(aList[::2], aList[1::2])
>> newList
>> [('a', 1), ('b', 2), ('c', 3)]
>>
>> Regards,
>>
>> Laurent
>
>Or if aList can get very large and/or the conversion has to be
>performed many times:
>
>from itertools import islice
>newList = zip(islice(aList,0,None,2), islice(aList,1,None,2))
>
Or, if you want to include fractional groups at the end
>>> aList = ['a', 1, 'b', 2, 'c', 3]
>>> from itertools import groupby
>>> def grouper(n):
... def git():
... while True:
... for _ in xrange(n): yield 0
... for _ in xrange(n): yield 1
... git = git()
... def grouper(_): return git.next()
... return grouper
...
>>> [tuple(g) for _, g in groupby(aList, grouper(2))]
[('a', 1), ('b', 2), ('c', 3)]
>>> [tuple(g) for _, g in groupby(aList, grouper(3))]
[('a', 1, 'b'), (2, 'c', 3)]
>>> [tuple(g) for _, g in groupby(aList, grouper(4))]
[('a', 1, 'b', 2), ('c', 3)]
Regards,
Bengt Richter
More information about the Python-list
mailing list