## 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.