strange behaviour with remove

Panard panard at inzenet.org
Sat Jun 19 06:51:22 EDT 2004


Ok, I reply to myself, it's working when you add, line 3
l = [ i for i in l ]

I think the reason is that when you do a remove on d[ 'list' ] it will also
do a remove on l, because, I think, l in the dictionnary is only a
reference...


Panard wrote:

> Hi!
> 
> Can anyone explain this to me :
> $ cat test.py
> l = [ 1, 2, 3 ]
> d = { 'list' : l }
> 
> for x in l :
>         print "rm", x
>         d[ 'list' ].remove( x )
>         print "l =", l
> 
> print d
> 
> $ python test.py
> rm 1
> l = [2, 3]
> rm 3
> l = [2]
> {'list': [2]}
> 
> 
> Why 2 isn't removed ? and why l is changing during the loop ??
> Am I missing something ?
> 
> My python is 2.3.4
> 
> Thanks
> 

-- 
Panard



More information about the Python-list mailing list