Hemos visto dos estructuras de datos fundamentales en Python que son las listas y las tuplas.
La lista es una estructura mutable (es decir podemos modificar sus elementos, agregar y borrar) en cambio una tupla es una secuencia de datos inmutable, es decir una vez definida no puede cambiar.
En Python vimos que podemos definir elementos de una lista que sean de tipo lista, en ese caso decimos que tenemos una lista anidada.
Ahora que vimos tuplas también podemos crear tuplas anidadas.
En general podemos crear y combinar tuplas con elementos de tipo lista y viceversa, es decir listas con componente tipo tupla.
empleado=["juan", 53, (25, 11, 1999)] print(empleado) empleado.append((1, 1, 2016)) print(empleado) alumno=("pedro",[7, 9]) print(alumno) alumno[1].append(10) print(alumno)
Por ejemplo definimos la lista llamada empleado con tres elementos: en el primero almacenamos su nombre, en el segundo su edad y en el tercero la fecha de ingreso a trabajar en la empresa (esta se trata de una tupla) Podemos más adelante durante la ejecución del programa agregar otro elemento a la lista con por ejemplo la fecha que se fue de la empresa:
empleado=["juan", 53, (25, 11, 1999)] print(empleado) empleado.append((1, 1, 2016)) print(empleado)
Tenemos definida la tupla llamada alumno con dos elementos, en el primero almacenamos su nombre y en el segundo una lista con las notas que ha obtenido hasta ahora:
alumno=("pedro",[7, 9]) print(alumno)
Podemos durante la ejecución del programa agregar una nueva nota a dicho alumno:
alumno[1].append(10) print(alumno)
Almacenar en una lista de 5 elementos tuplas que guarden el nombre de un pais y la cantidad de habitantes.
Definir tres funciones, en la primera cargar la lista, en la segunda imprimirla y en la tercera mostrar el nombre del país con mayor cantidad de habitantes.
def cargar_paisespoblacion(): paises=[] for x in range(5): nom=input("Ingresar el nombre del pais:") cant=int(input("Ingrese la cantidad de habitantes:")) paises.append((nom,cant)) return paises def imprimir(paises): print("Paises y su poblacion") for x in range(len(paises)): print(paises[x][0],paises[x][1]) def pais_maspoblacion(paises): pos=0 for x in range(1,len(paises)): if paises[x][1]>paises[pos][1]: pos=x print("Pais con mayor cantidad de habitantes:",paises[pos][0]) # bloque principal paises=cargar_paisespoblacion() imprimir(paises) pais_maspoblacion(paises)
En la primer función definimos una lista llamada paises y dentro de una estructura repetitiva cargamos un string con el nombre del pais y una variable entera con la cantidad de habitantes, luego agregamos un elemento a la lista de tipo tupla:
def cargar_paisespoblacion(): paises=[] for x in range(5): nom=input("Ingresar el nombre del pais:") cant=int(input("Ingrese la cantidad de habitantes:")) paises.append((nom,cant)) return paises
La segunda función recibe la lista y procedemos a mostrar cada tupla contenida en cada elemento de la lista:
def imprimir(paises): print("Paises y su poblacion") for x in range(len(paises)): print(paises[x][0],paises[x][1])
Para identificar el nombre del pais con mayor población iniciamos una variable pos con el valor 0 indicando que en dicha posición de la lista se encuentra el pais con mayor poblacion, luego dentro del for controlamos las demás tuplas almacenadas en la lista si hay un pais con mayor población:
def pais_maspoblacion(paises): pos=0 for x in range(1,len(paises)): if paises[x][1]>paises[pos][1]: pos=x print("Pais con mayor cantidad de habitantes:",paises[pos][0])
empleados = [["juan",(2000,3000,4233)] , ["ana",(3444,1000,5333)] , etc. ]
Se deben cargar los datos por teclado, pero si se cargaran por asignación tendría una estructura similar a esta:
candidatos=[ ("juan",[("cordoba",100),("buenos aires",200)]) , ("ana", [("cordoba",55)]) , ("luis", [("buenos aires",20)]) ]1) Función para cargar todos los candidatos, sus nombres y las provincias con los votos obtenidos.
ejercicio153.py def cargar_empleados(): empleados=[] for x in range(5): nom=input("Ingrese el nombre del empleado:") su1=int(input("Primer sueldo:")) su2=int(input("Segundo sueldo:")) su3=int(input("Tercer sueldo:")) empleados.append([nom,(su1,su2,su3)]) return empleados def ganancias(empleados): print("Monto total ganado por empleado en los ultimos tres meses") for x in range(5): total=empleados[x][1][0]+empleados[x][1][1]+empleados[x][1][2] print(empleados[x][0],total) def ganancias_superior10000(empleados): print("Empleados con ingresos superiores a 10000 en los ultimos 3 meses") for x in range(5): total=empleados[x][1][0]+empleados[x][1][1]+empleados[x][1][2] if total>10000: print(empleados[x][0],total) # bloque principal empleados=cargar_empleados() ganancias(empleados) ganancias_superior10000(empleados) ejercicio154.py def cargar_candidatos(): candidatos=[] for x in range(3): nom=input("Ingrese el nombre del candidato:") cant=int(input("Los votos de cuantas provincias tiene para cargar?")) provincias=[] for z in range(cant): prov=input("Nombre de provincia:") votos=int(input("Cantidad de votos:")) provincias.append((prov,votos)) candidatos.append((nom,provincias)) return candidatos def totalvotos_candidato(candidatos): for x in range(len(candidatos)): suma=0 for z in range(len(candidatos[x][1])): suma=suma+candidatos[x][1][z][1] print(candidatos[x][0],suma) # bloque principal candidatos=cargar_candidatos() totalvotos_candidato(candidatos)