On Wednesday 18 November 2009 17:47:09 tbour...@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 <et...@stoneleaf.us> wrote: > > tbour...@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) -- http://mail.python.org/mailman/listinfo/python-list