Tuples part 2

Ivan Illarionov ivan.illarionov at gmail.com
Thu Jun 5 20:38:01 CEST 2008

```On 5 июн, 21:22, George Sakkis <george.sak... at gmail.com> wrote:
> On Jun 5, 11:48 am, Ivan Illarionov <ivan.illario... at gmail.com> wrote:
>
>
>
> > On 5 июн, 19:38, George Sakkis <george.sak... at gmail.com> wrote:
>
> > > 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
>
> > OP wanted variables and I showed him how to do this. I agree that a
> > list or a dict would be better.
>
> > Ivan
>
> Generating variable names at runtime doesn't work for locals and it is
> a bad solution for globals in 99.9% of the cases. It is usually more
> helpful to point someone who can't even express his problem clearly to
> the right direction, rather than taking his pseudocode literally and
> coming up with a semi-working translation.
>
> George

Understanding of how to create variables dynamically can be good for
OP's learning curve even though it's a bad solution in this particular
case.

I agree that it was my mistake to not point him in the right
direction.

Ivan

```