Operaciones para cortar listas en Python (slice notation)

Publicado por parzibyte en

Cortar arreglos en Python, slice en listas

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.


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB.Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron.Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scriptsLa plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C.Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

1 Comment

Invertir arreglo o lista en Python - Parzibyte's blog · diciembre 18, 2018 a las 11:29 pm

[…] ¿Quiere saber más sobre las operaciones para cortar listas en Python? haz click aquí. […]

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: