Cortar arreglos en Python, slice en listas

Operaciones para cortar listas en Python (slice notation)

Python es un lenguaje que tiene algunas propiedades un poco especiales a la hora de tratar con listas o arreglos. Se puede cortar un arreglo desde su inicio hasta determinado lugar, o desde determinado lugar hasta el final.

Cortar arreglos en Python, slice en listas
Cortar arreglos en Python, slice en listas

También se puede cortar desde el inicio hasta -2 elementos, y otras cosas que al principio son confusas pero después son útiles.

Nota: al menos para efectos de este post, lista y arreglo se refieren a lo mismo.

Operaciones slice en Python

Estas operaciones son las cuales involucran una lista y el símbolo de dos puntos :. De esta manera se pueden cortar listas, así:

lista_cortada = lista[1:3]

Vamos a ver todas las operaciones posibles con esta notación.

Operaciones normales para cortar lista en Python

Para cortar desde inicio hasta fin, se usa esto:

lista[inicio:fin]

Por ejemplo, desde el elemento 0 hasta el 2:

lista[0:2]

Aunque si es cero, no es necesario que se especifique:

lista[:2]

También se puede cortar desde determinado lugar hasta el final:

lista[2:]

Incluso se puede no cortar:

lista[:]

Todo eso se puede ver en el siguiente código:

Utilizar números negativos

Aquí se complican un poco las cosas, pero no hay problema. Se pueden usar números negativos para cortar arreglos en Python. Por ejemplo, lo siguiente obtiene el último elemento:

lista[-1:]

Esto es porque comienza en -1, pero como no hay índices negativos, se regresa y entonces se encuentra con el último elemento. Y como ya se encuentra en el fin, no necesita ir más allá.

Igualmente si se quieren obtener los últimos dos elementos:

lista[-2:]

O desde el inicio, pero sin los últimos 2 elementos:

lista[:-2]

Aquí el código:

Con step o pasos

La notación de slice en Python soporta un tercer “argumento” y es el número de pasos que se avanza al cortar. Por defecto, es 1; pero puede ser especificado de otra manera. Dicho de otro modo, cuando hacemos esto:

lista[0:5] (obtiene desde el 0 hasta el 5 -1)

Es lo mismo que hacer esto:

lista[0:5:1] (obtiene desde el 0 hasta el 5 -1 en pasos de 1)

Pero si cambiamos el tercer argumento, para que sea en pasos de 2:

lista[0:5:2]

Entonces obtiene los elementos del 0 hasta el 5, pero ignorando algunos. Comienza en el 0, y avanza 2 pasos, así que selecciona el que tiene el índice 2. Luego, desde el 2 avanza otros 2 pasos y se encuentra con el índice 4. Si ya no hay más al saltar, entonces se detiene.

La gran diferencia es que cuando ponemos que sea en pasos de 1 y cortamos desde 0 hasta 5, devuelve una lista con 5 elementos. Pero cuando especificamos que vaya en pasos de 2, la devuelve con 3.

Hablar es de mal gusto, así que aquí el código:

Por cierto, se puede observar que para invertir una lista se tiene que avanzar en pasos de -1, seleccionado desde el inicio hasta el fin, así:

lista[::-1]

Esto es explicado en profundidad en otro post que trata sobre cómo invertir un arreglo o lista en Python.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

1 comentario en “Operaciones para cortar listas en Python (slice notation)”

  1. Pingback: Invertir arreglo o lista en Python - Parzibyte's blog

Dejar un comentario