[Tutor] how to make a reference to part of list?

Kent Johnson kent37 at tds.net
Mon Oct 2 13:57:31 CEST 2006


Xie Chao wrote:
>       Namely, if  list1 = {1, 2, 3}, and I wanna make a reference, say 
> "ref",  to list1's sublist (which is also of type list), say {2, 3}, so 
> that when I make change to ref[0], then list1[1] will be changed!
>       But how can I make such a reference, 3x!  

There is nothing built-in to Python that will let you do this. I don't 
think it would be too hard to write a class that does what you want for 
basic indexing operations. I would start with a copy of UserList (in 
module UserList). If you go beyond simple indexing and slicing I think 
you will have trouble. Say you have a class RefList that does what you 
want, and suppose you have
a = [1, 2, 3]
b = RefList(a, 1, 2)
b is [2, 3]
c = RefList(a, 0, 1)
c is [1, 2]

Now what is the result of d=b+c? Is it a RefList with two references to 
a, that looks like [1, 2, 2, 3]? What is the value of d after d[1] = 0? 
Is it [1, 0, 0, 3]?

Can you say more about why you want to do this? Maybe there is another 
solution.

By the way list literals in Python are written with square brackets [] 
not curly braces {}.

Kent




More information about the Tutor mailing list