Thanks Steve.

It's obvious now that you've pointed it out.

Do you happen to know if there is an efficient way to initialize a list like this without explicitly writing out each element?

Mike
----- Original Message ----- From: "Steve Willoughby" <[EMAIL PROTECTED]>
To: "Mike Meisner" <[EMAIL PROTECTED]>
Cc: <tutor@python.org>
Sent: Friday, July 25, 2008 7:03 PM
Subject: Re: [Tutor] List indexing problem


Mike Meisner wrote:
I need to do some statistical analysis by binning values into an array.
Being new to Python, I tried to use a list of lists. I've extracted just the minimum code that I'm having trouble with:

What you need to remember is that Python works with *objects*, and variables are simply *references* to those objects. So if I say
a = [1,2,3]
b = a

b and a both refer to the *SAME* list object (not two lists which happen to have the same elements).

    temp = [[0, 0, 0],[0, 0, 0],[0, 0, 0]]

temp now refers to a list object containing 3 lists, each containing 3 integers.

    # initialize to zero
    for i in range(20):
        IP.append(temp)

Now IP contains 20 copies of references to the *same* list object.
So you were modifying the underlying list object which happens to be referenced many times in IP.




_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to