Tuples part 2

George Sakkis george.sakkis at gmail.com
Thu Jun 5 17:38:26 CEST 2008


On Jun 5, 11:21 am, Ivan Illarionov <ivan.illario... at gmail.com> wrote:
> On 5 июн, 18:56, Ivan Illarionov <ivan.illario... at gmail.com> wrote:
>
>
>
> > On 5 июн, 18:19, "victor.hera... at gmail.com" <victor.hera... at gmail.com>
> > wrote:
>
> > > On Jun 5, 3:49 pm, Ivan Illarionov <ivan.illario... at gmail.com> wrote:
>
> > > > On 5 ÉÀÎ, 01:57, "victor.hera... at gmail.com" <victor.hera... at gmail.com>
> > > > wrote:
>
> > > > > Hi Everyone,
>
> > > > > i have another question. What if i wanted to make n tuples, each with
> > > > > a list of coordinates. For example :
>
> > > > > coords = list()
> > > > > for h in xrange(1,11,1):
> > > > >    for i in xrange(1, 5, 1) :
> > > > >       for j in xrange(1, 5, 1) :
> > > > >          for k in xrange(1,2,1) :
> > > > >             coords.append((i,j,k))
> > > > >             lista+str(h)= tuple coords
> > > > > print tuple(coords)
>
> > > > > so that i will have tuple1, tuple2,..., tupleN, etc. I am trying to do
> > > > > it the way i show you above but it is not working properly. I wish you
> > > > > could help me with that. Thanks again,
> > > > >>> from itertools import repeat, izip
> > > > >>> coords = tuple((i,j,k) for i in xrange(1,5) for j in xrange(1,5) for k in xrange(1,2))
> > > > >>> locals().update(("tuple%s" % i, coord) for i, coord  in izip(xrange(1,11), repeat(coords)))
> > > > >>> tuple1
>
> > > > ((1, 1, 1), (1, 2, 1), (1, 3, 1), (1, 4, 1), (2, 1, 1), (2, 2, 1), (2,
> > > > 3, 1), (2
> > > > , 4, 1), (3, 1, 1), (3, 2, 1), (3, 3, 1), (3, 4, 1), (4, 1, 1), (4, 2,
> > > > 1), (4, 3
> > > > , 1), (4, 4, 1))
>
> > > > Does this help?
>
> > > > But I don't understand why you need this?
>
> > > > Ivan
>
> > > Hi,
>
> > > What i need is, for example:
>
> > > tuple 1=((1, 1, 1), (1, 2, 1), (1, 3, 1), (1, 4, 1))
>
> > > tuple 2=((2, 1, 1), (2, 2, 1), (2, 3, 1), (2, 4, 1))
>
> > > tuple 3=((3, 1, 1), (3, 2, 1), (3, 3, 1), (3, 4, 1))
>
> > > and so on. Please help me and sorry for not taking the time to post my
> > > questions properly.
>
> > > Victor
>
> > Or even so:
>
> > locals().update(("tuple_%s" % i, tuple((i,j,k) for j in range(1,5) for
> > k in range(1,2))) for i in range(1,5))
>
> > Ivan
>
> Tried to make it readable:
>
> def iter_coords(i):
>     for j in xrange(1,5):
>         for k in xrange(1,2):
>             yield i, j, k
>
> def iter_vars():
>     for i in xrange(1, 5):
>         yield "tuple_%s" % i, tuple(iter_coords(i))
>
> locals().update(dict(iter_vars()))

locals().update() works by accident here because it's in global scope;
it doesn't work within a function.

Use a proper data structure, like a dict or a list, and access each
tuple list as 'tuples[n]' instead of 'tuple_n'.

George



More information about the Python-list mailing list