# iterator question

Travis Oliphant oliphant.travis at ieee.org
Fri Sep 29 22:11:57 CEST 2006

```Neal Becker wrote:
> Any suggestions for transforming the sequence:
>
> [1, 2, 3, 4...]
> Where 1,2,3.. are it the ith item in an arbitrary sequence
>
> into a succession of tuples:
>
> [(1, 2), (3, 4)...]
>
> In other words, given a seq and an integer that specifies the size of tuple
> to return, then for example:
>
> seq = [a,b,c,d,e,f]
> for e in transform (seq, 2):
>   print e
>
> would return
> (a,b)
> (c,d)
> (e,f)
>

Well, if you have NumPy installed, then this is pretty easy to do by
reshaping the 1-d array into a 2-d array:

import numpy as N

def transform(seq, num):
a = N.array(seq)
a.shape = (-1, num)
return a

This would return a sequence object that would print using lists

If you really insisted on tuples, then you could either convert the
elements by replacing the last line with

return [tuple(x) for x in a]

or use a "record-array":

import numpy as N

def transform(seq, num):
a = N.asarray(seq)
dt = a.dtype
newdt = [('',dt)]*num
return a.view(newdt).tolist()

This would return a list of tuples as requested.

-Travis

```