2

If I have the list:

lista=[99, True, "Una Lista", [1,3]]

What does the following expression mean?

mi_var = lista[0:4:2]

3 Answers 3

8

The syntax lista[0:4:2] is called extended slice syntax and returns a slice of the list consisting of the elements from index 0 (inclusive) to 4 (exclusive), but only including the even indexes (step = 2).

In your example it will give [99, "Una Lista"]. More generally you can get a slice consisting of every element at an even index by writing lista[::2]. This works regardless of the length of the list because the start and end parameters default to 0 and the length of the list respectively.

One interesting feature with slices is that you can also assign to them to modify the original list, or delete a slice to remove the elements from the original list.

>>> x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> x[::2] = ['a', 'b', 'c', 'd', 'e']   # Assign to index 0, 2, 4, 6, 8
>>> x
['a', 1, 'b', 3, 'c', 5, 'd', 7, 'e', 9]
>>> del x[:5]                            # Remove the first 5 elements
>>> x
[5, 'd', 7, 'e', 9]
Sign up to request clarification or add additional context in comments.

1 Comment

The indexes are odd, not even
0

Iterate through the list from 0 to 3 (since 4 is excluded, [start, end)) stepping over two elements. The result of this is [99, 'Una Lista'] as expected and that is stored in the list, mi_var

Comments

0

One way just to run and see:

>>> lista=[99, True, "Una Lista", [1,3]]
>>> lista[0:4:2]
[99, 'Una Lista']

It's a slice notation, that creates a new list consisting of every second element of lista starting at index 0 and up to but not including index 4

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.