Warning

This course is fully in spanish :d

Listas

En esta clase, nos sumergiremos en profundidad en uno de los tipos de datos más versátiles y utilizados en Python.

Las listas son estructuras de datos que nos permiten almacenar secuencias ordenadas de elementos. Son mutables, lo que significa que podemos modificarlas después de su creación, y son dinámicas, permitiéndonos añadir o quitar elementos de ellas.

Características de las Listas

Vamos a explorar las características clave de las listas en Python, que incluyen su capacidad para:

  • Almacenar datos heterogéneos, es decir, pueden contener elementos de diferentes tipos (enteros, cadenas, flotantes y más) dentro de una misma lista.
  • Ser indexadas y cortadas, lo que permite acceder a elementos específicos de la lista directamente a través de su índice.
  • Ser anidadas, es decir, una lista puede contener otras listas como elementos, lo que permite crear estructuras de datos complejas como matrices.

Operaciones con Listas

También cubriremos las operaciones fundamentales que se pueden realizar con listas, como:

  • Añadir elementos con métodos como ‘append()‘ y ‘extend()‘.
  • Eliminar elementos con métodos como ‘remove()‘ y ‘pop()‘.
  • Ordenar las listas con el método ‘sort()‘ o la función incorporada ‘sorted()‘.
  • Invertir los elementos con el método ‘reverse()‘ o la sintaxis de corte ‘[::-1]‘.
  • Comprender las comprensiones de listas, una forma “pythonica” de crear y manipular listas de manera concisa y eficiente.

Métodos de Listas

Profundizaremos en la rica gama de métodos que Python ofrece para trabajar con listas y cómo estos métodos pueden ser utilizados para manipular listas de acuerdo a nuestras necesidades.

Buenas Prácticas

Discutiremos las mejores prácticas en el manejo de listas, incluyendo cómo y cuándo usar listas en comparación con otros tipos de colecciones en Python, como tuplas, conjuntos y diccionarios.

Al final de esta clase, tendrás un conocimiento profundo de las listas en Python y estarás equipado con las técnicas para manejarlas eficazmente en tus programas. Con esta base sólida, podrás manipular colecciones de datos con confianza y aplicar esta habilidad central en tareas como la manipulación de datos, la automatización y el desarrollo de algoritmos.

names = ['S4vitar', 'Hackermate' , 'Lobotec', 'Hackavis']
names_uppercase = [name.upper() for name in names]

Tuplas

En esta clase, dedicaremos nuestro enfoque a las tuplas, una estructura de datos fundamental en Python que comparte algunas similitudes con las listas, pero se distingue por su inmutabilidad.

Las tuplas son colecciones ordenadas de elementos que no pueden modificarse una vez creadas. Esta característica las hace ideales para asegurar que ciertos datos permanezcan constantes a lo largo del ciclo de vida de un programa.

Características de las Tuplas

  • Inmutabilidad: Una vez que se crea una tupla, no puedes cambiar, añadir o eliminar elementos. Esta inmutabilidad garantiza la integridad de los datos que desea mantener constantes.
  • Indexación y Slicing: Al igual que las listas, puedes acceder a los elementos de la tupla mediante índices y también puedes realizar operaciones de slicing para obtener subsecuencias de la tupla.
  • Heterogeneidad: Las tuplas pueden contener elementos de diferentes tipos, incluyendo otras tuplas, lo que las hace muy versátiles.

Operaciones con Tuplas

Aunque no puedes modificar una tupla, hay varias operaciones que puedes realizar:

  • Empaquetado y Desempaquetado de Tuplas: Las tuplas permiten asignar y desasignar sus elementos a múltiples variables de forma simultánea.
  • Concatenación y Repetición: Similar a las listas, puedes combinar tuplas usando el operador ‘+‘ y repetir los elementos de una tupla un número determinado de veces con el operador ‘*****‘.
  • Métodos de Búsqueda: Puedes usar métodos como ‘index()‘ para encontrar la posición de un elemento y ‘count()‘ para contar cuántas veces aparece un elemento en la tupla.

Uso de Tuplas en Python

  • Funciones y Asignaciones Múltiples: Las tuplas son muy útiles cuando una función necesita devolver múltiples valores o cuando se realizan asignaciones múltiples en una sola línea.
  • Estructuras de Datos Fijas: Se usan para crear estructuras de datos que no deben cambiar, como los días de la semana o las coordenadas de un punto en el espacio.

Buenas Prácticas

Abordaremos cuándo es más apropiado utilizar tuplas en lugar de listas y cómo la elección de una tupla sobre una lista puede afectar la claridad y la seguridad del código.

Al concluir esta clase, tendrás un entendimiento claro de qué son las tuplas, cómo y cuándo utilizarlas en tus programas, y las prácticas recomendadas para trabajar con este tipo de datos inmutable. Las tuplas son una herramienta poderosa en Python, y saber cómo utilizarlas te permitirá escribir código más seguro y eficiente.

# Son inmutables
example = (1,2,3,4,5)
example2 = (1, "test", [1,2,3], 4, True, {'manzanas': 1, 'peras': 5}, 5) 
a, b, c, d = example # cada variable se asigna sola a cada valor de la tupla
 
numeros_pares = tuple(i for i in example if i % 2 == 0)

Conjuntos (Sets)

En esta clase, nos adentraremos en los conjuntos, conocidos en Python como ‘sets‘. Los conjuntos son una colección de elementos sin orden y sin elementos repetidos, inspirados en la teoría de conjuntos de las matemáticas. Son ideales para la gestión de colecciones de elementos únicos y operaciones que requieren eliminar duplicados o realizar comparaciones de conjuntos.

Características de los Conjuntos

  • Unicidad: Los conjuntos automáticamente descartan elementos duplicados, lo que los hace perfectos para recolectar elementos únicos.
  • Desordenados: A diferencia de las listas y las tuplas, los conjuntos no mantienen los elementos en ningún orden específico.
  • Mutabilidad: Los elementos de un conjunto pueden ser agregados o eliminados, pero los elementos mismos deben ser inmutables (por ejemplo, no puedes tener un conjunto de listas, ya que las listas se pueden modificar).

Operaciones con Conjuntos

Exploraremos las operaciones básicas de conjuntos que Python facilita, como:

  • Adición y Eliminación: Añadir elementos con ‘add()‘ y eliminar elementos con ‘remove()‘ o ‘discard()‘.
  • Operaciones de Conjuntos: Realizar uniones, intersecciones, diferencias y diferencias simétricas utilizando métodos o operadores respectivos.
  • Pruebas de Pertenencia: Comprobar rápidamente si un elemento es miembro de un conjunto.
  • Inmutabilidad Opcional: Usar el tipo ‘frozenset‘ para crear conjuntos que no se pueden modificar después de su creación.

Uso de Conjuntos en Python

  • Eliminación de Duplicados: Son útiles cuando necesitas asegurarte de que una colección no tenga elementos repetidos.
  • Relaciones entre Colecciones: Facilitan la comprensión y el manejo de relaciones matemáticas entre colecciones, como subconjuntos y superconjuntos.
  • Rendimiento de Búsqueda: Proporcionan una búsqueda de elementos más rápida que las listas o las tuplas, lo que es útil para grandes volúmenes de datos.

Buenas Prácticas

Discutiremos cuándo es beneficioso usar conjuntos en lugar de otras estructuras de datos y cómo su uso puede influir en la eficiencia del programa.

Al final de esta clase, tendrás una comprensión completa de los conjuntos en Python y cómo pueden ser utilizados para hacer tu código más eficiente y lógico, aprovechando sus propiedades únicas para manejar datos. Con este conocimiento, podrás implementar estructuras de datos complejas y operaciones que requieren lógica de conjuntos.

conjunto = {1,2,3}
conjunto2 = {1,3,5,6,7}
conjunto.discard(7); # si no existe no salta excepción como con .remove()
 
conjunto_final = conjunto.intersect(conjunto2); # [out] {1,3}
conjunto_final2 = conjunto.union(conjunto2); # [out] {1,2,3,5,6,7}
conjunto_final3 = conjunto.difference(conjunto2); # [out] {2}
# .issubset() para comprobar si un conjunto es subconjunto de otro
 
print(5 in conjunto2); # comprobar si existe en el conjunto

Diccionarios

En esta clase, nos centraremos en los diccionarios, una de las estructuras de datos más poderosas y flexibles de Python. Los diccionarios en Python son colecciones desordenadas de pares clave-valor. A diferencia de las secuencias, que se indexan mediante un rango numérico, los diccionarios se indexan con claves únicas, que pueden ser cualquier tipo inmutable, como cadenas o números.

Características de los Diccionarios

  • Desordenados: Los elementos en un diccionario no están ordenados y no se accede a ellos mediante un índice numérico, sino a través de claves únicas.
  • Dinámicos: Se pueden agregar, modificar y eliminar pares clave-valor.
  • Claves Únicas: Cada clave en un diccionario es única, lo que previene duplicaciones y sobrescrituras accidentales.
  • Valores Accesibles: Los valores no necesitan ser únicos y pueden ser de cualquier tipo de dato.

Operaciones con Diccionarios

Durante la clase, exploraremos cómo realizar operaciones básicas y avanzadas con diccionarios:

  • Agregar y Modificar: Cómo agregar nuevos pares clave-valor y modificar valores existentes.
  • Eliminar: Cómo eliminar pares clave-valor usando del o el método ‘pop()‘.
  • Métodos de Diccionario: Utilizar métodos como ‘keys()‘, ‘values()‘, y ‘items()‘ para acceder a las claves, valores o ambos en forma de pares.
  • Comprensiones de Diccionarios: Una forma elegante y concisa de construir diccionarios basados en secuencias o rangos.

Uso de Diccionarios en Python

  • Almacenamiento de Datos Estructurados: Ideales para almacenar y organizar datos que están relacionados de manera lógica, como una base de datos en memoria.
  • Búsqueda Eficiente: Los diccionarios son altamente optimizados para recuperar valores cuando se conoce la clave, proporcionando tiempos de búsqueda muy rápidos.
  • Flexibilidad: Pueden ser anidados, lo que significa que los valores dentro de un diccionario pueden ser otros diccionarios, listas o cualquier otro tipo de dato.

Buenas Prácticas

Enfatizaremos las mejores prácticas para trabajar con diccionarios, incluyendo la selección de claves adecuadas y el manejo de errores comunes, como intentar acceder a claves que no existen.

Al final de esta clase, tendrás una comprensión completa de los diccionarios y estarás listo para utilizarlos para gestionar eficazmente los datos dentro de tus programas. Los diccionarios son una herramienta esencial en Python y saber cómo utilizarlos te abrirá la puerta a un nuevo nivel de programación.

diccionario = {"nombre":"s4vitar", "edad":28, "isla":"Tenerife"}
 
for key, value in diccionario.items():
	print(f"Para la clave {key} tenemos el valor {value}")
 
for elem in diccionario.keys():
	print(elem)
 
for elem in diccionario.values():
	print(elem)

Continúa con POO 🍌