[Tutor] A list in list problem

Dave S pythontut at pusspaws.net
Mon Aug 21 19:05:08 CEST 2006


On Monday 21 August 2006 17:41, Alan Gauld wrote:
> >>>> a=b=[]
> >>>> a
> >
> > []
> >
> >>>> b
> >
> > []
>
> These are the same list.
>
> >>>> a=[1,2,3]
>
> But here you create a new list and assign it to a.
>
> >>>> a
> >
> > [1, 2, 3]
> >
> >>>> b
> >
> > []
>
> So a points to the new list and b to the original.
>
> > Tinkering some more I think it is the append that did it.
>
> Yes, the append adds the data to the original list.
>
> >>>> a=b=[]
> >>>> a
> >
> > []
> >
> >>>> b
> >
> > []
> >
> >>>> a.append([1,2,3])
> >>>> a
> >
> > [[1, 2, 3]]
> >
> >>>> b
> >
> > [[1, 2, 3]]
>
> Exactly so.
>
> > It appended to the common object and did not create a separate one ?
>
> Yes, the first assignment to 'a' created a new list and broke the
> shared reference.
>
> I almost never use the x=y=value style for this reason.
> For the minimal amount of typing I prefer either
>
> x = value1
> y = value2
>
> or tuple assignment:
>
> x,y = v1,v2
>
> Which for lists is:
>
> x,y = [],[]
>
> ie two separate empty lists.
>
> > I guess var1 = var2 = 0 is generally bad programming style ?
>
> Its fine if you're sure it's what you want, but what it looks like
> isn't always what you get... as you discovered  :-)
>
> > get my code more compact using list comprehension etc
>
> Compact code is not always a virtue.
> Tuple assignment seems to me a good compromise.
> And FWIW I try to limit tuple assignment to 3 values max
> just for clarity. Also I try to ensure the variables are linked
> in some way - like x,y coordinates, or similar types of variable:
> max_len, min_len etc
>

Tupples, hadn't thought of that - I like it :)

> > PS This is probably an impossible question but I always struggle to
> > find names
> > for variables - any hints ?
>
> Write a description of what it is there for - what does it do in the
> program.
> Abbreviate that to a couple of key words. That's your name... If you
> want
> a more detailed view find a copy of Code Complete by McConnell, it
> has a whole chapter on variable naming issues...
> Your variable names looked ok to me FWIW.

Ahh buts that's the 5th time I have changed them - you should have seen the 
previous trys :)

>
> Alan G


More information about the Tutor mailing list