Pointers/References in Python?

Terry Reedy tjreedy at udel.edu
Wed Jul 30 18:39:02 CEST 2008



boblatest at googlemail.com wrote:
> Hello,
> 
> I have a long list of memory-heavy objects that I would like to access
> in differently sorted order. Let's say I'd like to have lists called
> by_date or by_size that I can use to access the objects in the
> specified order.
> 
> Of course I can just build those lists naively by creating copies of
> the original list and then sorting them according to my wishes. But
> that would create huge memory overhead. Of course I could use lists of
> indices into the "master" list, just as in C I'd create lists or
> arrays of pointers into the original data.
> 
> Is there a clever Python way to do this, or should I just use lists of
> indices?
> 
> I know there is a thing called "shallow copy" that has something to do
> with not duplicating memory content but I don't understand the
> concept. Maybe that's what would help here, too.

A containers/collections contain/collect references to objects, not the 
objects themselves.

lcopy = somelist[:] # or list(somelist)

makes a shallow copy, which only copies the references.

There are applications for lists of indexes, but they are fairly 
specialized.

tjr




More information about the Python-list mailing list