tags:

views:

107

answers:

4

If I have the list:

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

What does the following expression mean?

mi_var = lista[0:4:2]
+7  A: 

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]
Mark Byers
The indexes are odd, not even
Michael Mrozek
great! i really understood
elgianka
A: 

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

sukhbir
A: 

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

SilentGhost
A: 

Quiz after the fine explanations ;) :

What means?

a=['1','2','4']
a[2:2]='3'
Tony Veijalainen