On 8 Nov 2005 01:43:43 -0800, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote:

>But if lst[42]["pos"] happens to hold an integer value, then
>
>a = lst[42]["pos"]
>
>will _copy_ that integer value into 'a', right? Changing 'a' will not
>change the value at lst[42]["pos"]

Right, but try an example:

 >>> lst = range(42)+[{'pos':123}]+range(43,50)
 >>> lst
 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 
22, 23, 24, 25, 2
 6, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, {'pos': 123}, 
43, 44, 45, 46, 47,
  48, 49]
 >>> lst[41:44]
 [41, {'pos': 123}, 43]
 >>> lst[42]
 {'pos': 123}
 >>> lst[42]['pos']
 123
 >>> a = lst[42]['pos']
 >>> a
 123
 >>> lst[42]['pos']
 123
 >>> id(lst[42]['pos'])
 49421860
 >>> id(a)
 49421860

IOW, a is now an alias for the same 123 immutable integer object as is referred 
to by the 'pos' key
in the dict which is the 43rd element (index 42) of lst.

Regards,
Bengt Richter
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to