Hi.

short answer: immediately after the line

while i < 4:

add the line

    P = [0,0]

Your problem seems to be that when you put something in a list, python
does not make a copy of it, but instead stores that actual object in the
list. So the line

pts.append(P)

appends the object P (or, rather, the object that P references) to the
list pts. Thus, when you change P, you also 'change' the list. (A better
way to think of it, though, is that you don't actually change the list
by changing P. Instead, you might think of the list as eventually
looking like

[P, P, P, ..., P]

because all you did was append the same object a bunch of times, so of
course all of the entries in pts are the same at the end.)

The line

    P = [0,0]

creates a new list (which P now references). Putting that line in the
while loop should fix the problem because you will be adding a different
object to the list each time.

A simpler example is

sage: x = ['something']
sage: y = x # now x and y are the SAME OBJECT
sage: x
['something']
sage: y
['something']
sage: x[0] = 'something else'
sage: y # since x and y are the same object, they have the same contents
['something else']
sage: x = ['something else again'] # now x references a new object,
sage: y                            # so y doesn't change
['something else']

-bober

On Wed, 2008-01-09 at 21:25 -0800, benjamin antieau wrote:
> Code for the worksheet attached below.
> 
> There must surely be a simple answer to this problem, but I have not
> been able to figure it out. I loop through i,j print the list
> [i,j], and append the list to pts. However, once appended to points
> something goes wrong, and all that points sees are the constant lists
> [3,3]. I have changed the various constants and such, but I am at a
> loss to explain why this is happening.
> 
> What I need is for pts to contain the correct information. Any help
> would really be appreciated.
> 
> Ben
> 
> {{{id=125|
> P=[0,0]
> i=0
> pts=[]
> while i<4:
>     P[0]=i
> 
>     j=0
>     while j<4:
>         P[1]=j
>         print P
>         pts.append(P)
>         j+=1
>     i+=1
> pts
> ///
> [0, 0]
> [0, 1]
> [0, 2]
> [0, 3]
> [1, 0]
> [1, 1]
> [1, 2]
> [1, 3]
> [2, 0]
> [2, 1]
> [2, 2]
> [2, 3]
> [3, 0]
> [3, 1]
> [3, 2]
> [3, 3]
> [[3, 3], [3, 3], [3, 3], [3, 3], [3, 3], [3, 3], [3, 3], [3, 3], [3,
> 3], [3, 3], [3, 3], [3, 3], [3, 3], [3, 3], [3, 3], [3, 3]]
> }}}
> 
> > 
> 
> 


--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sage-support
URLs: http://sage.math.washington.edu/sage/ and http://sage.scipy.org/sage/
-~----------~----~----~----~------~----~------~--~---

Reply via email to