non-copy slices

Rami Chowdhury rami.chowdhury at gmail.com
Thu Nov 19 04:00:17 CET 2009


On Wednesday 18 November 2009 17:47:09 tbourden at doc.ic.ac.uk wrote:
> Hi,
> 
> sth == something :) sorry for the abbreviation. I'm talking about the
> shallow copy, still it's a copy. 

I'm not sure you're understanding the point others have been making. A 
list item is merely another reference to an existing object -- it 
doesn't copy the object in any way.

>  Unnecessary in my case and the worst
>  part in my scenario is the creation (allocation)>  and deletion of a
>  very large number of lists of moderate size (a few hundred objects)
>  generated due to slices, while I only need to have a restricted view
>  on the original list. 
>  The islice class partially solves the problem
>  as I mentioned in the previous emails.
> 
> Cheers,
> Themis
> 
> On Wed, Nov 18, 2009 at 3:44 PM, Ethan Furman <ethan at stoneleaf.us> 
wrote:
> > tbourden at doc.ic.ac.uk wrote:
> > > Hi,
> > >
> > > I was looking for a facility similar to slices in python library
> > > that would avoid the implicit creation of a new list and copy of
> > > elements that is the default behaviour. Instead I'd rather have a
> > > lazy iteratable object on the original sequence. Well, in the end
> > > I wrote it myself but I was wondering if I missed sth in the
> > > library. If I didn't is there a particular reason there isn't sth
> > > like that? I find it hard to believe that all slice needs have
> > > strictly copy semantics.
> > >
> > > Cheers,
> > > Themis
> >
> > Two questions:  1) What is "sth"?  and 2), What copy?
> >
> > Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit
> > (Intel)]
> > In [1]: class dummy(object):
> >    ...:     pass
> >    ...:
> >
> > In [2]: a = dummy()
> > In [3]: b = dummy()
> > In [4]: c = dummy()
> > In [5]: d = dummy()
> > In [6]: e = dummy()
> > In [7]: list1 = [a, b, c, d, e]
> > In [8]: list1
> > Out[8]:
> > [<__main__.dummy object at 0x0130C510>,
> >  <__main__.dummy object at 0x013F1A50>,
> >  <__main__.dummy object at 0x00A854F0>,
> >  <__main__.dummy object at 0x00A7EF50>,
> >  <__main__.dummy object at 0x00A7E650>]
> >
> > In [9]: list2 = list1[1:3]
> > In [10]: list2
> > Out[10]:
> > [<__main__.dummy object at 0x013F1A50>,
> >  <__main__.dummy object at 0x00A854F0>]
> >
> > In [11]: list2[0] is list1[1]
> > Out[11]: *True*
> > In [12]: list2[1] is list1[2]
> > Out[12]: *True*
> >
> > No copying of items going on here.  What do you get?
> >
> > ~Ethan~
> > --
> > http://mail.python.org/mailman/listinfo/python-list
> 


----
Rami Chowdhury
"As an online discussion grows longer, the probability of a comparison 
involving Nazis or Hitler approaches one." -- Godwin's Law
408-597-7068 (US) / 07875-841-046 (UK) / 0189-245544 (BD)



More information about the Python-list mailing list