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 _______________________________________________ Tutor maillist - [email protected] http://mail.python.org/mailman/listinfo/tutor
