Velocity Reviews > Bug with lists of pairs of lists and append()

# Bug with lists of pairs of lists and append()

Gabriel Zachmann
Guest
Posts: n/a

 09-28-2007
Well,

could some kind soul please explain to me why the following trivial code
is misbehaving?

#!/usr/bin/python
s = []
l = [ 0 ]
r = [0, 0]
while r:
x = (l,r)
print x
s.append( x )
l.append( r.pop(0) )
print s

The output I get is:

([0], [0, 0])
([0, 0], [0])
[([0, 0, 0], []), ([0, 0, 0], [])]

and the error is in the last line: the two pairs in the outer list are
identical and they should be equal to the pairs one the first and the
2nd line, respectively! Shouldn't they?

I think I'm going nuts -- for the life of me I don't see what's going on ...

Thanks a lot in advance for any insights, etc.

Best regards,
Gabriel.

TeroV
Guest
Posts: n/a

 09-28-2007
Gabriel Zachmann wrote:
> Well,
>
> could some kind soul please explain to me why the following trivial code
> is misbehaving?
>
>
> #!/usr/bin/python
> s = []
> l = [ 0 ]
> r = [0, 0]
> while r:
> x = (l,r)
> print x
> s.append( x )
> l.append( r.pop(0) )
> print s
>
>
>
> The output I get is:
>
> ([0], [0, 0])
> ([0, 0], [0])
> [([0, 0, 0], []), ([0, 0, 0], [])]
>
> and the error is in the last line: the two pairs in the outer list are
> identical and they should be equal to the pairs one the first and the
> 2nd line, respectively! Shouldn't they?
>
> I think I'm going nuts -- for the life of me I don't see what's going on
> ...
>
> Thanks a lot in advance for any insights, etc.
>
> Best regards,
> Gabriel.

You didn't say what it is supposed to do.
But, does replacing line "x = (l, r)" with "x = l[:], r[:]" do the trick?

In the original code you do basically the same as this
>>> a = []
>>> b = [1,2]
>>> a.append(b)
>>> b.append(3)
>>> a

[[1, 2, 3]]

HTH

Gabriel Zachmann
Guest
Posts: n/a

 10-01-2007
Thanks a lot for your response, too.
Best regards,
Gabriel.

--
__________________________________________________ ____________
Life is so constructed that the event does not, cannot,
will not match the expectation. (Charlotte Bronte)
__________________________________________________ ____________
zach in.tu-clausthal.de __@/' www.gabrielzachmann.org
__________________________________________________ ____________