En esta entrega vamos a continuar estudiando las listas, que ya comenzamos en la anterior. Vamos a ver cómo ordenarlas, así como algunas herramientas útiles para la gestión de cadenas.

Listas (II)

Ordenación de una Lista

Ordenar listas es uno de los problemas más clásicos de la informática. Su importancia es tanta, que no se han dejado de investigar métodos que puedan mejorar la eficiencia de dicha operación. Aunque existen muchos métodos, aquí vamos a explicar el conocido como método de la burbuja, que, aunque resulta ineficiente en términos de coste computacional, es muy sencillo de implementar.

Nuestro objetivo es ordenar la siguiente lista:

  • Comenzamos comparando los dos primeros elementos, [0] y [1]. Si estos están ordenados, los dejamos tal cual, y si no se intercambian. En este caso, como 2 es menor que 5, no hacemos nada.
  • A continuación realizamos la misma acción con los siguientes, [1] y [2]. Al ser 5 mayor que 4, los intercambiamos.
  • Seguimos realizando las mismas acciones, con los pares [2][3] y [3][4]. Llegados a este punto, la lista todavía no está ordenada. Pero, con estos pasos, nos hemos asegurado que el elemento mayor se sitúe al final de la misma.
  • Ahora, se vuelven a realizar las mismas acciones, pero como el último elemento ya está ordenadose omite.
  • Ahora ya tenemos los dos últimos elementos en orden. Así que, como supondrás, volvemos a realizar las mismas acciones, pero omitiendo los dos últimos elementos.
  • Y una última vez, omitiendo los tres últimos.
  • ¡TACHAN! La lista está ordenada.

Ahora tocaría traducir el anterior algoritmo a código en Python. No obstante, dado que el diseño del algoritmo ya está hecho, creo que es mejor dejarlo como uno de los ejercicios del curso. ¡Intenta hacerlo por tu cuenta antes de ver la solución!

Ejercicio 08
Crea un programa que implemente el ejemplo mostrado anteriormente para ordenar una lista mediante el método de la burbuja.
Solución

Cadenas y Listas

Como ya se ha comentado, una cadena es un tipo especial de lista donde todos sus elementos son caracteres. Muchas veces, nos conviene convertir una lista en cadena o viceversa. Para ello, Python cuenta con una serie de utilidades que nos facilitan la vida.

Lista de Palabras

Algo que se suele realizar bastante es la generación de una lista con todas las palabras de una oración (por ejemplo, para contarlas después). En Python contamos con la función split(). Esta función nos devuelve una lista con todas las palabras de una cadena separadas por espacios (o el carácter que nosotros le indiquemos).

cadena = "a b c d"
lista = cadena.split()

El anterior código nos crearía la lista [«a», «b», «c», «d»].

Unir Palabras en una Cadena

La función join() hace lo contrario a split(). En este caso, unirá en una cadena las palabras contenidas en una lista, utilizando para ello el carácter sobre el cual se ejecute la función. Para obtener la cadena original anterior, haríamos lo siguiente:

cadena = " ".join(lista)

Lista de caracteres

Existe una última función útil, la cual nos genera una lista con todos los caracteres de una cadena. Se trata de la función list(). El siguiente código nos generaría la lista [«a», «b», «c»]:

lista = list("abc")

Las funciones join()split() y list() son muy útiles a la hora de trabajar con Python, así que asegúrate de no olvidarlas.

Ejercicio 09
Escribe un programa que, tomando como origen un texto con un número indeterminado de espacios entre las palabras, devuelva el mismo texto con únicamente espacios simples.
Solución


Con esto terminamos de ver todo lo referente a las listas. Ha sido una entrada más corta que las anteriores, pero quería separar en una propia la ordenación de listas, por la importancia que tiene.

¡Nos leemos!

#04 / Fundamentos de la Programación

  1. Estructuras de Datos (Matrices)
  2. Funciones
  3. Funciones (Recursividad)
  4. Estructuras de Datos (Registros)
  5. Ficheros
  6. ANEXO – Ejercicios Resueltos

Proyecto Final – LIFE, el Juego de la Vida


¿Quieres estar al día de todo lo publicado en el blog?

Para ello puedes suscribirte a mi canal RSS y/o seguirme en mis Redes Sociales.

Etiquetas: , , ,

Deja un comentario

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

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad