On Slicing Python Lists
3 June 2016
A lot many are familiar with Python lists and the feature of slicing, although I find the description that most tutorials not intuitive enough. Here is how it goes.
Let us start with defining an array of 10 elements
>>> a = [i for i in range(10)]
Now, the following I assume you’re familiar with.
>>> a[3:6]
[3, 4, 5]
And the way people think about it is selecting elements starting with index 3 till and including the element with index 6-1=5.
Do you digest that? I cannot. Why do I include the first index while not the second one? If I think in terms of indices, I have to spend my brain power in subtracting the second index by one, and I tell you I am very lazy about that.
Then there are people who say that you start with index 3 and choose 6-3=3 elements there on. This does work because we see the following happening.
>>> a[4:4]
[]
But I do not understand that if I were inventing slicing, and I would want people to think in terms of an index and a length, why would I not just keep length as the second parameter? In this hypothetical situation,
>>> a[3:3]
[3, 4, 5]
DISCLAIMER: I do not claimer that this is how it went but I’ll now talk about how I like to look at slicing
>>> a[3:]
[3, 4, 5, 6, 7, 8, 9]
I like to say that doing this skips the first three elements and gives the rest.
>>> a[:6]
[0, 1, 2, 3, 4, 5]
And this picks the first six elements. Simple really!
>>> a[3:6]
[3, 4, 5]
This just gives the intersection of the two.
My two cents.