non-copy slices

Ethan Furman ethan at stoneleaf.us
Wed Nov 18 16:44:47 CET 2009


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~



More information about the Python-list mailing list