# python list index - an easy question

Peter Otten __peter__ at web.de
Sat Dec 17 15:00:05 EST 2016

```John wrote:

> Hi,
>
>    I am new to Python, and I believe it's an easy question. I know R and
>    Matlab.
>
> ************
>>>> x=[1,2,3,4,5,6,7]
>>>> x[0]
> 1
>>>> x[1:5]
> [2, 3, 4, 5]
> *************
>
>     My question is: what does x[1:5] mean? By Python's convention, the
>     first element of a list is indexed as "0". Doesn't x[1:5] mean a
>     sub-list of x, indexed 1,2,3,4,5? If I am right, it should print
>     [2,3,4,5,6]. Why does it print only [2,3,4,5]?

Python uses half-open intervals, i. e. the first index is included, but the
last index is not:

x[1:5] == [x[1], x[2], x[3], x[4]]

The advantage of this convention is that it allows easy splitting and length
spefication.

>>> items
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

To swap the head and tail:

>>> gap = 5
>>> items[gap:] + items[:gap]
[50, 60, 70, 80, 90, 0, 10, 20, 30, 40]

To extract a stride of a given length:

>>> start = 2
>>> length = 3
>>> items[start: start + length]
[20, 30, 40]

The disadvantage is that not everybody follows this convention...

```