On 06/12/13 15:39, spir wrote:

How does slicing in Python really work? Apparently, there are slice
objects (start, past-end, step), generated using either the 'slice'
builtin func or the extended slicing syntax [i:k:s]. Is this correct? [1]

I believe the slice notation simply calls the underlying method as is the case for most operations in Python. But I'm no expert in the internals, others are far better qualified.

Does (only) the extended syntax (always) trigger slicing instead of
contructing a new subsequence? (new substring or sublist or whatever,
actually holding a section of the original sequence)

I'm not sure what you think slicing does? But in general a slice produces a new sequence. Thus


L = [1,2,3,4]
L2 = L[1:2]

L2 is a new list object.

Indeed taking a full slice is one of the commonest ways of making a copy of a list:

L3 = L[:]   # a new copy of L

Are slices and subsequences transparently usable one for the other?

subsequences don't exist as objects in Python so you can't use them in the same way as a slice (which does explicitly exist). So I don't understand what you have in mind here.

rationale, design, etc... Maybe this means slices have always existed
and I just missed them totally?

Slices have been in python since I started using it in V1.3. And I think from before then too. Certainly a very long time.

[2] The fact that slices exist at all shows how worth it is to avoid
needlessly creating subsequences,

No it doesn't. Slices create new sequences.
Creating a "sub sequence" is often the fastest most efficient way to do something. They are not something to get hung up about unless you have absolutely proved they are a source of a problem. Especially given the difficulty of writing reliable in-place code for many sequence operations.

HTH
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.flickr.com/photos/alangauldphotos

_______________________________________________
Tutor maillist  -  [email protected]
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to