very strange problem in 2.4

Steven D'Aprano steve at REMOVETHIScyber.com.au
Fri Apr 7 21:52:51 EDT 2006


On Fri, 07 Apr 2006 21:18:12 -0400, John Zenger wrote:

> Your list probably contains several references to the same object, 
> instead of several different objects.  This happens often when you use a 
> technique like:
> 
> list = [ object ] * 100
> 
> ..because although this does make copies when "object" is an integer, it 
> just makes references in other cases.

Wrong. It always makes references.

>>> L = [1]*3
>>> id(L[0]), id(L[1]), id(L[2])
(155972920, 155972920, 155972920)

This isn't a caching issue either, it also happens for objects which
aren't cached:

>>> x = 4591034.56472
>>> y = 4591034.56472
>>> x == y
True
>>> x is y
False
>>> L = [x]*3
>>> x is L[0] is L[1] is L[2]
True
>>> y is L[0]
False



-- 
Steven.




More information about the Python-list mailing list