Addressing the last element of a list

Bengt Richter bokr at oz.net
Tue Nov 8 05:13:42 EST 2005


On 8 Nov 2005 01:43:43 -0800, "pinkfloydhomer at gmail.com" <pinkfloydhomer at gmail.com> 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



More information about the Python-list mailing list