References and copying

Donn Cave donn at u.washington.edu
Fri Jun 9 19:54:35 CEST 2006


In article <44899cb3$0$21184$626a54ce at news.free.fr>,
 bruno at modulix <onurb at xiludom.gro> wrote:
> danmcleran at yahoo.com wrote:
...
> >>And I don't understand it.  I thought, that b will be a reference to a,
> >>so changing b should change a as well.
> > 
> > 
> > No, you've set the name b to reference a slice of a. Slicing a list
> > always returns a new list.
> 
> Please verify before asserting:
> 
> >>> a = [[1, 2], [3, 4]]
> >>> b = a[1]
> >>> b is a[1]
> True
> >>> id(b)
> 46912496915448
> >>> id(a[1])
> 46912496915448
> >>>

You're right - he actually didn't set the name b to reference a
slice of a.  But if he had - slicing a list does return a new list.
Indexing, as in the example, returns the item object.  Or, binds a
reference to the left hand side identifier, whatever, but there is
no way to bind anything to the list location.

   Donn Cave, donn at u.washington.edu



More information about the Python-list mailing list