Can I try? Please verify that I use the same explanation for each syntactic form (list constructor, __setitem__, assignment operator). Also, please see that I refrain from mentioning variables and references.
Hope that'd pour some light, R. Scenario 1: ---------------- >>> list1 = [2, 3] Let there be a list built up from two elements: the number 2 and the number 3. We call it "list1". >>> list1[0] = 1 We change the thing called "list1" (which happens to be the object we created one sentence ago) by replacing its first element from whatever it was to the number 1. >>> print list1 [1, 3] Now examine the thing called "list1" - it contains two elements: the first is the number 1 (since we changed it to be so) and the second is the number 3 (since it didn't change from the time the object was born). Scenario 2: ---------------- >>> a = 1; b = 2; c = 3 We name the number 1 "a", the number 2 "b" and the number 3 "c". >>> list1 = [a, b, c] We create a list built up from three elements: the object named "a" (i.e., the number 1), the object named "b" (i.e., the number 2) and the object named "c" (i.e., the number 3). We call it "list1". >>> list2 = [b, c] We create a list built up from two elements: the object named "b" (i.e., the number 2) and the object named "c" (i.e., the number 3). We call it "list2". >>> print list1 [1, 2, 3] The object named "list1" consists of the number 1, the number 2 and the number 3. That exactly how it was bulit. >>> print list2 [2, 3] The object named "list2" consists of the number 2 and the number 3. That exactly how it was bulit. Scenario 3: ---------------- >>> list1 = [1, 2] >>> list2 = [3, 4] We create two lists, named "list1" and "list2" respectively (with the obvious content: the number 1 ...) >>> mlist_a = [list1, list2] We create a list built of the object named "list1" and the object named "list2" (which are the same two lists created above). We call it "mlist_a". >>> print mlist_a [[1, 2], [3, 4]] Obvious. >>> mlist_a[1] = list1 We change the thing called "mlist_a" (which happens to be the object we created two sentences ago) by replacing its first element to the object named "list1". Note that now the object named "mlist_a" contains the same object as both the first and the seconds element: a list that consists of the number 1 and the number 2. >>> print mlist_a [[1, 2], [1, 2]] Obvious, considering the last note. -----Original Message----- From: guy keren [mailto:[EMAIL PROTECTED] Sent: Sunday, December 04, 2005 1:44 AM To: Amit Aronovitch Cc: python@linux.org.il Subject: Re: teaching python variables On Fri, 2 Dec 2005, Amit Aronovitch wrote: > Meta > ==== > In this essay I'll try to clearly state some of my ideas about > variables in python and how to teach the subject to students new to programming. lets cut the long talks. in order for me to understand what you're trying to do, i would like you to explain the following scenarios using the terms you're suggesting: Scenario 1: >>> list1 = [2, 3] >>> list1[0] = 1 >>> print list1 [1, 3] Scenario 2: >>> a = 1; b = 2; c = 3 >>> list1 = [a, b, c] >>> list2 = [b, c] >>> print list1 [1, 2, 3] >>> print list2 [2, 3] Scenario 3: >>> list1 = [1, 2] >>> list2 = [3, 4] >>> mlist_a = [list1, list2] >>> print mlist_a [[1, 2], [3, 4]] >>> mlist_a[1] = list1 >>> print mlist_a [[1, 2], [1, 2]] -- guy "For world domination - press 1, or dial 0, and please hold, for the creator." -- nob o. dy