Obtenha valores indexados ímpares e pares da lista em Python

Desde que comecei a codificar em Python , gosto da maneira como a lista é gerenciada.
Quando você codifica em Java (versão 6), por exemplo, e deseja obter os valores indexados ímpar / par (como fazer x_y points do formato csv), você precisa passar por todos os valores e fazer a verificação:

int[] point_csv_array = {5, 12, 3, 21, 8, 7, 19, 102 };
//you want array_X = {5, 3, 8 ,19}
//you want array_Y = {12,21,7,102}

List<Integer> array_X = new ArrayList<Integer>();
List<Integer> array_Y = new ArrayList<Integer>();
for (int i : point_csv_array) {
if ((i & 1) == 1) {
array_X
.add(i);
} else {
array_Y
.add(i);
}
}
System.out.println("array_X:" + array_X);
System.out.println("array_Y:" + array_Y);

Em Python , para obter o mesmo resultado, você pode usar a função de fatiamento :

point_csv_array = [5, 12, 3, 21, 8, 7, 19, 102]
array_X
= l[::2]
array_Y
= l[1:][::2]

print("array_X: " + str(array_X))
print("array_Y: " + str(array_Y))

Para explicação::
l[::2]a função de fatiamento aqui (desde Python 2.3 ) leva 1 elemento em 2 . Se você fizer l[::3]isso, terá 1 elemento em 3 , portanto, serão os números indexados ímpares.
l[1:][::2]: a primeira [1:]função de fatiamento aqui retorna uma lista do segundo número até o final da lista. Seguimos o elemento 1 em 2, portanto, serão os números indexados pares.