On Dec 22, 8:25 am, Eric <einazaki...@yahoo.com> wrote: > This surprises me, can someone tell me why it shouldn't? I figure if > I want to create and initialize three scalars the just do "a=b=c=7", > for example, so why not extend it to arrays.
The thing to remember is that everything is an object, and that it's better to think of variables as labels on an object. So: a=b=c=7 means that _one_ integer object with the value of 7 can be referenced using any of the labels a, b or c. x=y=z=[] means that _one_ empty list can be referenced using x, y or z. The difference is that the value of a number object _cannot be changed_ ('immutable') while a list can be modified to add or remove items ('mutable'). a=10 just reassigns the label a to an integer object of value 10. x.append("foo") _modifies_ the list referred to by x, which is the same list known as y & z. > Also, is there a more pythonic way to do "x=[], y=[], z=[]"? I'd say that _is_ the most pythonic way, it's very obvious in its intent (or would be with appropriate names). If it bothers you that much: def listgen(count, default=[]): for _ in xrange(count): yield default[:] x, y, z = listgen(3) -- http://mail.python.org/mailman/listinfo/python-list