Estructuras de Datos

Creación y manipulación de listas

Las listas en Python son colecciones ordenadas y mutables de elementos, que permiten almacenar múltiples valores en una sola variable. Son uno de los tipos de datos más utilizados en Python debido a su flexibilidad y versatilidad.

Código de Ejemplo

				
					# Creación de listas
lista_vacia = []
lista_numeros = [1, 2, 3, 4, 5]
lista_mixta = [1, "hola", 3.14, True]

# Acceso a elementos de la lista
primer_elemento = lista_numeros[0]
ultimo_elemento = lista_numeros[-1]

# Modificación de elementos
lista_numeros[1] = 10

# Añadir elementos a la lista
lista_numeros.append(6)  # Añadir al final
lista_numeros.insert(2, 15)  # Insertar en una posición específica

# Eliminar elementos de la lista
lista_numeros.remove(10)  # Eliminar por valor
ultimo_elemento = lista_numeros.pop()  # Eliminar el último elemento y devolverlo
elemento_especifico = lista_numeros.pop(2)  # Eliminar y devolver el elemento en una posición específica

# Rebanado de listas (slicing)
sub_lista = lista_numeros[1:4]  # Obtener elementos desde el índice 1 hasta el 3 (excluyendo el 4)
sub_lista_inicio = lista_numeros[:3]  # Obtener los primeros tres elementos
sub_lista_fin = lista_numeros[2:]  # Obtener los elementos desde el índice 2 hasta el final

# Longitud de la lista
longitud = len(lista_numeros)

# Iterar sobre una lista
for numero in lista_numeros:
    print(numero)

# Métodos de listas comunes
lista_numeros.sort()  # Ordenar la lista
lista_numeros.reverse()  # Invertir el orden de la lista
indice = lista_numeros.index(4)  # Obtener el índice de un elemento específico
conteo = lista_numeros.count(4)  # Contar las veces que un elemento aparece en la lista

# Concatenación de listas
otra_lista = [7, 8, 9]
lista_concatenada = lista_numeros + otra_lista

# Comprensión de listas (list comprehensions)
cuadrados = [x**2 for x in lista_numeros]

# Imprimir resultados para ver los cambios
print("Lista original:", lista_numeros)
print("Primer elemento:", primer_elemento)
print("Último elemento:", ultimo_elemento)
print("Lista después de modificaciones:", lista_numeros)
print("Sub lista (1:4):", sub_lista)
print("Sub lista (inicio hasta 3):", sub_lista_inicio)
print("Sub lista (desde 2 hasta fin):", sub_lista_fin)
print("Longitud de la lista:", longitud)
print("Lista concatenada:", lista_concatenada)
print("Cuadrados:", cuadrados)

				
			

Explicación

Creación de Listas

Las listas se crean utilizando corchetes [] y pueden contener elementos de cualquier tipo de datos. Puedes crear una lista vacía o inicializarla con valores.

  • lista_vacia = []: Crea una lista vacía.
  • lista_numeros = [1, 2, 3, 4, 5]: Crea una lista de números enteros.
  • lista_mixta = [1, "hola", 3.14, True]: Crea una lista que contiene diferentes tipos de datos.

Acceso a Elementos

Puedes acceder a los elementos de una lista utilizando índices. Los índices comienzan en 0 para el primer elemento. Los índices negativos permiten acceder a los elementos desde el final de la lista.

  • primer_elemento = lista_numeros[0]: Accede al primer elemento.
  • ultimo_elemento = lista_numeros[-1]: Accede al último elemento.

Modificación de Elementos

Puedes modificar los elementos de una lista asignando un nuevo valor a un índice específico.

  • lista_numeros[1] = 10: Cambia el segundo elemento de 2 a 10.

Añadir Elementos

Puedes añadir elementos a una lista utilizando los métodos append e insert.

  • lista_numeros.append(6): Añade 6 al final de la lista.
  • lista_numeros.insert(2, 15): Inserta 15 en la posición 2.

Eliminar Elementos

Puedes eliminar elementos de una lista utilizando los métodos remove, pop, y del.

  • lista_numeros.remove(10): Elimina la primera ocurrencia de 10.
  • ultimo_elemento = lista_numeros.pop(): Elimina y devuelve el último elemento.
  • elemento_especifico = lista_numeros.pop(2): Elimina y devuelve el elemento en la posición 2.

Rebanado de Listas (Slicing)

Puedes obtener sublistas utilizando la notación de rebanado.

  • sub_lista = lista_numeros[1:4]: Obtiene los elementos desde el índice 1 hasta el 3 (excluyendo el 4).
  • sub_lista_inicio = lista_numeros[:3]: Obtiene los primeros tres elementos.
  • sub_lista_fin = lista_numeros[2:]: Obtiene los elementos desde el índice 2 hasta el final.

Longitud de la Lista

Puedes obtener la longitud de una lista utilizando la función len.

  • longitud = len(lista_numeros): Devuelve el número de elementos en la lista.

Iterar sobre una Lista

Puedes iterar sobre los elementos de una lista utilizando un bucle for.

  • for numero in lista_numeros: print(numero): Imprime cada número en la lista.

Métodos Comunes de Listas

Las listas en Python tienen muchos métodos útiles para manipular sus elementos.

  • lista_numeros.sort(): Ordena la lista en orden ascendente.
  • lista_numeros.reverse(): Invierte el orden de la lista.
  • indice = lista_numeros.index(4): Devuelve el índice de la primera ocurrencia de 4.
  • conteo = lista_numeros.count(4): Devuelve el número de veces que 4 aparece en la lista.

Concatenación de Listas

Puedes concatenar dos listas utilizando el operador +.

  • lista_concatenada = lista_numeros + otra_lista: Concatenación de lista_numeros y otra_lista.

Comprensión de Listas (List Comprehensions)

Las comprensiones de listas son una forma concisa de crear listas. Permiten aplicar una expresión a cada elemento de una secuencia y construir una nueva lista en una sola línea.

  • cuadrados = [x**2 for x in lista_numeros]: Crea una lista de los cuadrados de cada número en lista_numeros.

Resumen

  • Creación de Listas: Las listas se crean utilizando corchetes [] y pueden contener cualquier tipo de datos.
  • Acceso a Elementos: Utiliza índices para acceder a los elementos de una lista.
  • Modificación de Elementos: Puedes modificar los elementos asignando nuevos valores a índices específicos.
  • Añadir Elementos: Utiliza append e insert para añadir elementos a la lista.
  • Eliminar Elementos: Utiliza remove, pop, y del para eliminar elementos de la lista.
  • Rebanado de Listas (Slicing): Utiliza la notación de rebanado para obtener sublistas.
  • Longitud de la Lista: Utiliza len para obtener la longitud de una lista.
  • Iterar sobre una Lista: Utiliza un bucle for para iterar sobre los elementos de una lista.
  • Métodos Comunes de Listas: Métodos como sort, reverse, index y count permiten manipular listas.
  • Concatenación de Listas: Utiliza + para concatenar listas.
  • Comprensión de Listas: Utiliza comprensiones de listas para crear listas de manera concisa.

Creación y uso de tuplas

Las tuplas en Python son colecciones ordenadas e inmutables de elementos. A diferencia de las listas, una vez creadas, las tuplas no pueden ser modificadas. Se utilizan cuando se desea almacenar una secuencia de elementos que no deben cambiar a lo largo de la ejecución del programa.

Código de Ejemplo

				
					# Creación de tuplas
tupla_vacia = ()
tupla_numeros = (1, 2, 3, 4, 5)
tupla_mixta = (1, "hola", 3.14, True)

# Acceso a elementos de la tupla
primer_elemento = tupla_numeros[0]
ultimo_elemento = tupla_numeros[-1]

# Desempaquetado de tuplas
a, b, c, d, e = tupla_numeros
print("Desempaquetado:", a, b, c, d, e)

# Desempaquetado parcial
x, y, *resto = tupla_numeros
print("Desempaquetado parcial:", x, y, resto)

# Concatenación de tuplas
tupla_concatenada = tupla_numeros + (6, 7, 8)
print("Tupla concatenada:", tupla_concatenada)

# Repetición de tuplas
tupla_repetida = tupla_numeros * 2
print("Tupla repetida:", tupla_repetida)

# Comprobar si un elemento está en una tupla
existe = 3 in tupla_numeros
print("El número 3 está en la tupla:", existe)

# Longitud de la tupla
longitud = len(tupla_numeros)
print("Longitud de la tupla:", longitud)

# Iterar sobre una tupla
for numero in tupla_numeros:
    print("Número en tupla:", numero)

# Índice de un elemento en una tupla
indice = tupla_numeros.index(3)
print("Índice del número 3:", indice)

# Contar apariciones de un elemento en una tupla
conteo = tupla_numeros.count(3)
print("Apariciones del número 3:", conteo)

				
			

Explicación

Creación de Tuplas

Las tuplas se crean utilizando paréntesis () y pueden contener elementos de cualquier tipo de datos. Se pueden crear tuplas vacías o inicializarlas con valores.

  • tupla_vacia = (): Crea una tupla vacía.
  • tupla_numeros = (1, 2, 3, 4, 5): Crea una tupla de números enteros.
  • tupla_mixta = (1, "hola", 3.14, True): Crea una tupla que contiene diferentes tipos de datos.

Acceso a Elementos

Puedes acceder a los elementos de una tupla utilizando índices, al igual que con las listas. Los índices comienzan en 0 para el primer elemento y pueden ser negativos para acceder desde el final.

  • primer_elemento = tupla_numeros[0]: Accede al primer elemento.
  • ultimo_elemento = tupla_numeros[-1]: Accede al último elemento.

Desempaquetado de Tuplas

El desempaquetado de tuplas permite asignar los elementos de una tupla a variables individuales.

  • a, b, c, d, e = tupla_numeros: Asigna cada elemento de tupla_numeros a las variables a, b, c, d, y e.
  • x, y, *resto = tupla_numeros: Asigna los primeros dos elementos a x y y, y el resto a resto.

Concatenación de Tuplas

Puedes concatenar tuplas utilizando el operador +.

  • tupla_concatenada = tupla_numeros + (6, 7, 8): Crea una nueva tupla combinando tupla_numeros y (6, 7, 8).

Repetición de Tuplas

Puedes repetir los elementos de una tupla utilizando el operador *.

  • tupla_repetida = tupla_numeros * 2: Repite los elementos de tupla_numeros dos veces.

Comprobar Existencia de un Elemento

Puedes comprobar si un elemento está presente en una tupla utilizando el operador in.

  • existe = 3 in tupla_numeros: Devuelve True si 3 está en tupla_numeros, de lo contrario, False.

Longitud de la Tupla

Puedes obtener la longitud de una tupla utilizando la función len.

  • longitud = len(tupla_numeros): Devuelve el número de elementos en la tupla.

Iterar sobre una Tupla

Puedes iterar sobre los elementos de una tupla utilizando un bucle for.

  • for numero in tupla_numeros: Itera sobre cada número en la tupla tupla_numeros.

Índice de un Elemento

Puedes obtener el índice de la primera aparición de un elemento utilizando el método index.

  • indice = tupla_numeros.index(3): Devuelve el índice de la primera aparición de 3 en la tupla.

Contar Apariciones de un Elemento

Puedes contar el número de veces que un elemento aparece en una tupla utilizando el método count.

  • conteo = tupla_numeros.count(3): Devuelve el número de veces que 3 aparece en la tupla.

Resumen

  • Creación de Tuplas: Se crean utilizando paréntesis () y pueden contener cualquier tipo de datos.
  • Acceso a Elementos: Utiliza índices para acceder a los elementos de una tupla.
  • Desempaquetado de Tuplas: Permite asignar los elementos de una tupla a variables individuales.
  • Concatenación de Tuplas: Utiliza + para concatenar tuplas.
  • Repetición de Tuplas: Utiliza * para repetir los elementos de una tupla.
  • Comprobar Existencia de un Elemento: Utiliza in para comprobar si un elemento está presente en una tupla.
  • Longitud de la Tupla: Utiliza len para obtener la longitud de una tupla.
  • Iterar sobre una Tupla: Utiliza un bucle for para iterar sobre los elementos de una tupla.
  • Índice de un Elemento: Utiliza index para obtener el índice de la primera aparición de un elemento.
  • Contar Apariciones de un Elemento: Utiliza count para contar el número de veces que un elemento aparece en una tupla.

Diccionarios

Los diccionarios en Python son colecciones desordenadas de pares clave-valor. Cada clave debe ser única y está asociada a un valor. Los diccionarios son mutables, lo que significa que se pueden modificar después de su creación.

Código de Ejemplo

				
					# Creación de diccionarios
diccionario_vacio = {}
diccionario_persona = {
    "nombre": "Juan",
    "edad": 30,
    "ciudad": "Madrid"
}

# Acceso a elementos del diccionario
nombre = diccionario_persona["nombre"]
edad = diccionario_persona["edad"]

# Modificación de valores
diccionario_persona["edad"] = 31

# Añadir nuevos pares clave-valor
diccionario_persona["profesión"] = "Ingeniero"

# Eliminar pares clave-valor
del diccionario_persona["ciudad"]

# Métodos de diccionarios
# Obtener todas las claves
claves = diccionario_persona.keys()

# Obtener todos los valores
valores = diccionario_persona.values()

# Obtener todos los pares clave-valor
pares = diccionario_persona.items()

# Comprobar si una clave existe en el diccionario
existe_clave = "nombre" in diccionario_persona

# Obtener un valor de forma segura
profesion = diccionario_persona.get("profesión", "Desconocida")

# Eliminar y devolver un valor
ciudad = diccionario_persona.pop("ciudad", "No disponible")

# Limpiar el diccionario
diccionario_persona.clear()

# Crear un diccionario a partir de una lista de claves
claves = ["nombre", "edad", "ciudad"]
valores_defecto = dict.fromkeys(claves, "Desconocido")

# Iterar sobre un diccionario
for clave, valor in diccionario_persona.items():
    print(f"{clave}: {valor}")

# Imprimir resultados para ver los cambios
print("Diccionario original:", diccionario_persona)
print("Nombre:", nombre)
print("Edad:", edad)
print("Diccionario modificado:", diccionario_persona)
print("Claves:", list(claves))
print("Valores:", list(valores))
print("Pares:", list(pares))
print("Existe 'nombre':", existe_clave)
print("Profesión:", profesion)
print("Ciudad eliminada:", ciudad)
print("Diccionario después de clear:", diccionario_persona)
print("Valores por defecto:", valores_defecto)

				
			

Explicación

Creación de Diccionarios

Los diccionarios se crean utilizando llaves {} y pueden contener pares clave-valor. Las claves deben ser únicas y pueden ser de cualquier tipo inmutable (como cadenas o números). Los valores pueden ser de cualquier tipo.

  • diccionario_vacio = {}: Crea un diccionario vacío.
  • diccionario_persona = {"nombre": "Juan", "edad": 30, "ciudad": "Madrid"}: Crea un diccionario con tres pares clave-valor.

Acceso a Elementos

Puedes acceder a los valores de un diccionario utilizando sus claves. Si la clave no existe, se produce un error KeyError.

  • nombre = diccionario_persona["nombre"]: Accede al valor asociado con la clave "nombre".
  • edad = diccionario_persona["edad"]: Accede al valor asociado con la clave "edad".

Modificación de Valores

Puedes modificar los valores de un diccionario asignando un nuevo valor a una clave existente.

  • diccionario_persona["edad"] = 31: Cambia el valor de la clave "edad" a 31.

Añadir Nuevos Pares Clave-Valor

Puedes añadir nuevos pares clave-valor a un diccionario asignando un valor a una nueva clave.

  • diccionario_persona["profesión"] = "Ingeniero": Añade un nuevo par clave-valor "profesión": "Ingeniero".

Eliminar Pares Clave-Valor

Puedes eliminar pares clave-valor de un diccionario utilizando la palabra clave del.

  • del diccionario_persona["ciudad"]: Elimina el par clave-valor con la clave "ciudad".

Métodos de Diccionarios

Los diccionarios tienen varios métodos útiles para manipular sus elementos.

  • diccionario_persona.keys(): Devuelve una vista de todas las claves del diccionario.
  • diccionario_persona.values(): Devuelve una vista de todos los valores del diccionario.
  • diccionario_persona.items(): Devuelve una vista de todos los pares clave-valor del diccionario.
  • "nombre" in diccionario_persona: Devuelve True si la clave "nombre" existe en el diccionario.
  • diccionario_persona.get("profesión", "Desconocida"): Devuelve el valor de la clave "profesión" o "Desconocida" si la clave no existe.
  • diccionario_persona.pop("ciudad", "No disponible"): Elimina y devuelve el valor de la clave "ciudad" o "No disponible" si la clave no existe.
  • diccionario_persona.clear(): Elimina todos los elementos del diccionario.
  • dict.fromkeys(claves, "Desconocido"): Crea un nuevo diccionario con las claves de claves y valores "Desconocido".

Iterar sobre un Diccionario

Puedes iterar sobre los pares clave-valor de un diccionario utilizando un bucle for.

  • for clave, valor in diccionario_persona.items(): Itera sobre cada par clave-valor del diccionario.

Resumen

  • Creación de Diccionarios: Se crean utilizando llaves {} y contienen pares clave-valor.
  • Acceso a Elementos: Utiliza las claves para acceder a los valores del diccionario.
  • Modificación de Valores: Asigna nuevos valores a claves existentes.
  • Añadir Nuevos Pares Clave-Valor: Asigna valores a nuevas claves para añadir nuevos pares clave-valor.
  • Eliminar Pares Clave-Valor: Utiliza del para eliminar pares clave-valor.
  • Métodos de Diccionarios: Utiliza métodos como keys(), values(), items(), get(), pop(), y clear() para manipular diccionarios.
  • Iterar sobre un Diccionario: Utiliza un bucle for para iterar sobre los pares clave-valor de un diccionario.