# Python: What does for x in A[1:] mean?

## Python: What does for x in A[1:] mean?

Here are some of the example that I have tried

``````>>> a=[1,5,9,11,2,66]

>>> a[1:]
[5, 9, 11, 2, 66]

>>> a[:1]
[1]

>>> a[-1:]
[66]

>>> a[:-1]
[1, 5, 9, 11, 2]

>>> a[3]
11

>>> a[3:]
[11, 2, 66]

>>> a[:3]
[1, 5, 9]

>>> a[-3:]
[11, 2, 66]

>>> a[:-3]
[1, 5, 9]

>>> a[::1]
[1, 5, 9, 11, 2, 66]

>>> a[::-1]
[66, 2, 11, 9, 5, 1]

>>> a[1::]
[5, 9, 11, 2, 66]

>>> a[::-1]
[66, 2, 11, 9, 5, 1]

>>> a[::-2]
[66, 11, 5]

>>> a[2::]
[9, 11, 2, 66]
``````

I think you can understand more by this examples.

This is array slice syntax. See this SO question:
Explain Pythons slice notation .

For a list `my_list` of objects e.g. `[1, 2, foo, bar]`, `my_list[1:]` is equivalent to a shallow copied list of all elements starting from the 0-indexed `1`: `[2, foo, bar]`. So your `for` statement iterates over these objects:

``````for-iteration 0: x == 2
for-iteration 1: x == foo
for-iteration 2: x == bar
``````

`range(..)` returns a list/generator of indices (integers), so your for statement would iterate over integers `[1, 2, ..., len(my_list)]`

``````for-iteration 0: x == 1
for-iteration 1: x == 2
for-iteration 2: x == 3
``````

So in this latter version you could use `x` as an index into the list: `iter_obj = my_list[x]`.

Alternatively, a slightly more pythonic version if you still need the iteration index (e.g. for the count of the current object), you could use `enumerate`:

``````for (i, x) in enumerate(my_list[1:]):
# i is the 0-based index into the truncated list [0, 1, 2]
# x is the current object from the truncated list [2, foo, bar]
``````

This version is a bit more future proof if you decide to change the type of `my_list` to something else, in that it does not rely on implementation detail of 0-based indexing, and is therefore more likely to work with other iterable types that support slice syntax.

#### Python: What does for x in A[1:] mean?

Unlike other languages, iterating over a sequence in Python yields the elements within the sequence itself. This means that iterating over `[1, 2, 4]` yields `1`, `2`, and `4` in turn, and not `0`, `1`, and `2`.