Solución
Sí tu puedes:
l = L[1::2]
Y esto es todo. El resultado contendrá los elementos colocados en las siguientes posiciones ( 0
basado en, por lo que el primer elemento está en la posición 0
, el segundo en, 1
etc.):
1, 3, 5
por lo que el resultado (números reales) será:
2, 4, 6
Explicación
El [1::2]
al final es solo una notación para dividir la lista. Por lo general, tiene la siguiente forma:
some_list[start:stop:step]
Si lo omitimos start
, se 0
usaría el valor predeterminado ( ). Por tanto, se seleccionaría el primer elemento (en la posición 0
, porque los índices están 0
basados en). En este caso, se seleccionará el segundo elemento.
Debido a que se omite el segundo elemento, se utiliza el predeterminado (el final de la lista). Entonces, la lista se itera desde el segundo elemento hasta el final .
También proporcionamos el tercer argumento ( step
) que es 2
. Lo que significa que se seleccionará un elemento, se omitirá el siguiente, y así sucesivamente ...
Entonces, en resumen, en este caso [1::2]
significa:
- tome el segundo elemento (que, por cierto, es un elemento extraño, si juzga por el índice),
- omitir un elemento (porque tenemos
step=2
, por lo que estamos omitiendo uno, al contrario de lo step=1
que es predeterminado),
- toma el siguiente elemento,
- Repita los pasos 2 a 3. hasta llegar al final de la lista,
EDITAR : @PreetKukreti dio un enlace para otra explicación sobre la notación de corte de lista de Python. Vea aquí: Explica la notación de corte de Python
Extras: reemplazo del mostrador por enumerate()
En su código, crea y aumenta explícitamente el contador. En Python esto no es necesario, ya que puede enumerar a través de algunos iterables usando enumerate()
:
for count, i in enumerate(L):
if count % 2 == 1:
l.append(i)
Lo anterior tiene exactamente el mismo propósito que el código que estaba usando:
count = 0
for i in L:
if count % 2 == 1:
l.append(i)
count += 1
Más sobre la emulación de for
bucles con contador en Python: Accediendo al índice en Python 'for' bucles