Saltar a contenido

banner

11 Colecciones

Dentro de los lenguajes de programación hay tipos datos que son estructuras que pueden contener más de un dato, a comparación de los tipos de datos básicos, estas estructuras pueden contener muchos de esos datos básicos en su interior. Podrías decir que es una base de datos, pero esta solo existe mientras está la aplicación en ejecución, los datos son temporales. Las colecciones pueden contener cualquier tipo de dato, incluso mas colecciones.

En python son los siguientes:

  • Tuplas Tipo de dato Inmutable
  • Listas (arrays) Tipo de Mutable
  • Diccionarios
  • Sets

Nota: En este curso solo se cubriran las tuplas y las listas.

10.1 Tuplas

Es una estructura de datos inmutables, una vez declarada no puede cambiar su contenido, ni agregar, ni eliminar, no modificar.

Cada posicion de los datos tiene un indice (index), el cual me ayuda a acceder a el. La primera posicion siempre es 0.

La convencion de como declarar o nombrar a una lista o tupla es en plural

parámetros a destacar:

  • index: Indice
  • len: Longitud

Sintaxis:

nombre_tupla = (dato1, dato2, ..., datoN)
# Declaracion de una tupla

# Tiene 3 posiciones, comenzado en el 0. Largo de 3

calificaciones = (8,7,9)

print(calificaciones)

type(calificaciones)
(8, 7, 9)





tuple
# vamos a acceder a cada dato

calificacion1 = calificaciones[0]
calificacion2 = calificaciones[1]
calificacion3 = calificaciones[2]

print(calificacion1)
print(calificacion2)
print(calificacion3)
8
7
9
# intentando modificar una tupla

calificaciones[0] = 10
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

/tmp/ipykernel_890/2729348892.py in <module>
      1 # intentando modificar una tupla
      2
----> 3 calificaciones[0] = 10


TypeError: 'tuple' object does not support item assignment
# intentando borrar un elemento de la tupla

del calificaciones[1]
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

/tmp/ipykernel_890/1285800133.py in <module>
      1 # intentando borrar un elemento de la tupla
      2
----> 3 del calificaciones[1]


TypeError: 'tuple' object doesn't support item deletion
# Recorriendo tuplas con for y while

for calificacion in calificaciones:
    print(calificacion)

print('-------------------------')

contador = 0

while contador < len(calificaciones):
    calificacion = calificaciones[contador]
    print(calificacion)
    contador += 1
8
7
9
-------------------------
8
7
9

10.2 Listas

Es una coleccion de elementos ordenados. En otro lenguajes es conocido como un array. A este tipo de coleccion es Mutable, es decir, se le pueden agregar, eliminar, quitar, elementos. Podemos hacer diversas operaciones con ellos.

Elementos que debemos tener en cuenta son:

  • index: El indice o posicion de cada elemento en la lista, recordar que todas comienzan en la posicion 0.
  • length: La longitud o cantidad de elementos que contiene la lista

Sintaxis

nombre_lista = [elemento1, elemento2, elemento3,.. , elementoN]

Como se deben nombrar las listas (buena practica o convension)

  • El nombre de la varable que contanga una lista, debe ser en plural
  • Puede contener la palabra **list_** o **_list**

2.10.2.1 Funciones de las listas

Las lista son un objeto, por lo tanto cuenta con diversos metodos los cuales nos ayudan a interactuar con ellos:

  • append(element): Adds an element at the end of the list
  • clear(): Removes all the elements from the list
  • copy(): Returns a copy of the list
  • count(element): Returns the number of elements with the specified value
  • extend(list): Add the elements of a list (or any iterable), to the end of the current list
  • index(element[,start[,end]]): Returns the index of the first element with the specified value
  • insert(position, element): Adds an element at the specified position
  • pop([index]): Removes the element at the specified position
  • remove(element): Removes the first item with the specified value
  • reverse(): Reverses the order of the list
  • sort(): Sorts the list
# Declaro una lista con unas materias
materias = ['analogicas', 'digitales', 'mediciones'] # lista de str

print(materias)

#agregamos una materia mas a la lista
materias.append('dibujo 3D')

#imprimo la lista
print(materias)

#creo otra lista
materias2 = ['neumatica', 'mecanismos']

# Extendemos la primer lista con la segunda
materias.extend(materias2)

#imprimo la lista
print(materias)

#inserto una materia en la posicion 2
materias.insert(2,'Matematicas')

#imprimo la lista
print(materias)

#removemos el elemento 'Matematicas'
materias.remove("Matematicas")

#imprimo la lista
print(materias)

# Ordenamos las lista
materias.sort()

#imprimo la lista
print(materias)

# sacamos un elemento de la lista, si no se especifica saca al ultimo
ultima_materia = materias.pop()

#imprimo la lista
print(materias)

print('ultima materia:', ultima_materia)

# Invierto el orden de la lista
materias.reverse()

#imprimo la lista
print(materias)
['analogicas', 'digitales', 'mediciones']
['analogicas', 'digitales', 'mediciones', 'dibujo 3D']
['analogicas', 'digitales', 'mediciones', 'dibujo 3D', 'neumatica', 'mecanismos']
['analogicas', 'digitales', 'Matematicas', 'mediciones', 'dibujo 3D', 'neumatica', 'mecanismos']
['analogicas', 'digitales', 'mediciones', 'dibujo 3D', 'neumatica', 'mecanismos']
['analogicas', 'dibujo 3D', 'digitales', 'mecanismos', 'mediciones', 'neumatica']
['analogicas', 'dibujo 3D', 'digitales', 'mecanismos', 'mediciones']
ultima materia: neumatica
['mediciones', 'mecanismos', 'digitales', 'dibujo 3D', 'analogicas']

Obteniendo los datos de una lista

Sintaxis

    variable = nombre_lista [ posicion ]
#Acceso a los datos de la lista

materia1 = materias[0]
materia2 = materias[1]
materia3 = materias[2]
materia4 = materias[3]

print(materia1)
print(materia2)
print(materia3)
print(materia4)
mediciones
mecanismos
digitales
dibujo 3D
# Recorriendo una lista con FOR

for materia in materias:
    print('La materia es: ', materia)

print('*********************')

# Recorriendo una lista con WHILE

count = 0

while count < len(materias):
    materia = materias[count]
    print('La materia es: ',materia)
    count +=1
La materia es:  mediciones
La materia es:  mecanismos
La materia es:  digitales
La materia es:  dibujo 3D
La materia es:  analogicas
*********************
La materia es:  mediciones
La materia es:  mecanismos
La materia es:  digitales
La materia es:  dibujo 3D
La materia es:  analogicas
# Cosas adicionales que se pueden realizar con listas

# obtener la suma de los valores contenidos en la lista

valores = [1,5,3,9,6,3,5,8,7,2,6,7,2,5,2,3,5,4,5]

suma = sum(valores)
maximo = max(valores)
minimo = min(valores)

print("La suma:", suma)
print("El valor maximo:", maximo)
print("El valor minimo:", minimo)
La suma: 88
El valor maximo: 9
El valor minimo: 1

Ejercicios

  1. Crear una lista de frutas: manzana, platano y melon. Posteriormete agregar sandia. Despues agregarle una lista mas que contenga papaya, kiwi y durazno. He imprimir la lista completa. Despues remover la sandia e imprimir el resultado. Recorrer la lista de frutas imprimiendo cada una (usando un ciclo, de preferencia usar for).

  2. Crear una lista con sus calificaciones de Neumatica, y obtener el promedio. Se debe utilizar la función sum para el procedimiento. Imprimir cual es la calificacion maxima y minima, usando las funciones max() y min()

Eliminando elementos de la lista del

Cuando queremos eliminar algún elemento de una coleccion se usa la palabra reservada del junto a la posicion del elemento a eliminar.

Sintaxis

  • del coleccion[posicion|key]
# Eliminar elementos de una coleccion

materias = ['analogica', 'digitales', 'mediciones' ]

print(materias)

del materias[1] # Elimino el elemento que esta en la posicion 1 de la coleccion

print(materias)


alumnos = { 'carlos':[8,8,9] , 'angel':[8,8,8] }

print(alumnos)

del alumnos['carlos']

print(alumnos)

Función len

Los iteradores por default no te dicen cual es su largo, en muchas ocasiones necesitamos saber el largo para realizar ciertas tareas, para eso Python trae una función que nos ayuda.

Sintaxis

  • len(iterator): Devuelve el numero de los elementos de una coleccion
# Ejemplos de aplicacion de la función len()

string = 'hola'
str_len = len(string)

tupla = (5,9,3,6,'mensaje')
tupla_len = len(tupla)

lista = [1,2,3,6,'hola']
lista_len = len(lista)

diccionario = {'key1': 'valor1', 'key2': 'valor2', 'key3': 'valor3' }
dic_len = len(diccionario)

print('largo de str',str_len)
print('largo de tupla',tupla_len)
print('largo de lista',lista_len)
print('largo de diccionario',dic_len)
largo de str 4
largo de tupla 5
largo de lista 5
largo de diccionario 3
especialidades = [
    'mecatronica',
    'laboratorio',
    'contanbilidad',
    'mecanica',
    'electricidad'
    ]

count = 0

while count < len(especialidades):
    especialidad = especialidades[count]
    print(f'Una de las especialidades es: {especialidad}')
    count+=1
Una de las especialidades es: mecatronica
Una de las especialidades es: laboratorio
Una de las especialidades es: contanbilidad
Una de las especialidades es: mecanica
Una de las especialidades es: electricidad
import random
#Creando un pesudobot

#declaramos una lista con las frases que queremos decir con nuestro bot
hobbies = ['leer', 'correr', 'nadar']


print('Hola, me llamo BotPy')
print('Cual es tu nombre')
name = input()

print(f'Es un gusto concerte {name}')
print('Que lindo nombre tienes ;)')

print('Cual es tu hobby?')
hobby = input()

print(f'Wow!!!! que conincidencia, a mi también me encanta {hobby}')
print(f'Te cuento que también me gusta mucho {random.choice(hobbies)}')
Hola, me llamo BotPy
Cual es tu nombre



---------------------------------------------------------------------------

KeyboardInterrupt                         Traceback (most recent call last)

/tmp/ipykernel_30200/981218890.py in <module>
      8 print('Hola, me llamo BotPy')
      9 print('Cual es tu nombre')
---> 10 name = input()
     11
     12 print(f'Es un gusto concerte {name}')


~/Downloads/Cursos/Python/lib/python3.7/site-packages/ipykernel/kernelbase.py in raw_input(self, prompt)
    983             self._parent_ident["shell"],
    984             self.get_parent("shell"),
--> 985             password=False,
    986         )
    987


~/Downloads/Cursos/Python/lib/python3.7/site-packages/ipykernel/kernelbase.py in _input_request(self, prompt, ident, parent, password)
   1024             except KeyboardInterrupt:
   1025                 # re-raise KeyboardInterrupt, to truncate traceback
-> 1026                 raise KeyboardInterrupt("Interrupted by user") from None
   1027             except Exception as e:
   1028                 self.log.warning("Invalid Message:", exc_info=True)


KeyboardInterrupt: Interrupted by user

10.3 Diccionarios

Son un tipo de coleccion que su estructura es Llave - Valor. Para obtener el acceso al valor se hace a traves de la llave. La llave es unica y por lo tanto no se puede repetir.

Sintaxis

# Creacion de un diccionario
    diccionario = {
        'llave1': 'str',
        'llave2' : 5
        'llave3' : True,
        'llave4' : [1,2,6,'a']
        ......
    }

# Leyendo datos del diccionario

variable1 = diccionario['llave3'] # True
variable1 = diccionario.get('llave3') # True, en caso que no exista devuelve None

# Modificando valores existentes en el diccionario

diccionario['llave4'] = [1,2,6,8,5,6]

# Agregando valores nuevos al diccionario

diccionario['llave5'] = 'un valor'
calificaciones_neumatica = {
    'gamas': 9,
    'angelo': 8,
    'dania' : 10
}

print(calificaciones_neumatica['gamas'] )
print(calificaciones_neumatica['angelo'] )
print(calificaciones_neumatica['dania'] )

calificaciones_neumatica['leon'] = 10 # agregando un valor al diccionario

print(calificaciones_neumatica['leon'])

calificaciones_neumatica['angelo'] = 7 # actualizo el valor de esa llave

print(calificaciones_neumatica['angelo'])
9
8
10
10
7
for key in calificaciones_neumatica:
    print(f'con la llave: {key}, el valor es: {calificaciones_neumatica[key]}')

print('=======================')

# Extraigo todas las llaves
for key in calificaciones_neumatica.keys():
    print(key)

print('=======================')

# Extraigo los valores
for values in calificaciones_neumatica.values():
    print(values)
con la llave: gamas, el valor es: 9
con la llave: angelo, el valor es: 7
con la llave: dania, el valor es: 10
con la llave: leon, el valor es: 10
=======================
gamas
angelo
dania
leon
=======================
9
7
10
10

Función tuple()

La función tuple crea una instancia de una tupla vacia si no le pasamos ningun argumento. El argumento que puede recibir una coleccion.

mi_tupla = tuple() # crea una tupla vacia

calificaciones = [8,6,9,6,8]

tupla_calificaciones = tuple(calificaciones)

type(mi_tupla)

print(calificaciones)
print(tupla_calificaciones)
[8, 6, 9, 6, 8]
(8, 6, 9, 6, 8)

Función list()

La función list crea una instancia de una lista vacia si no le pasamos ningun argumento. El argumento que puede recibir una coleccion.

lista_vacia = list()

print(lista_vacia)

tupla_calificaciones = (8, 6, 9, 6, 8)
lista_calificaciones = list(tupla_calificaciones)

print(tupla_calificaciones)
print(lista_calificaciones)
[]
(8, 6, 9, 6, 8)
[8, 6, 9, 6, 8]

Función dict()

La función dict crea una instancia de un diccionario vacio si no le pasamos ningun argumento. El argumento que puede recibir una coleccion.

mi_diccionario = dict()

print(mi_diccionario)

mi_diccionario['hola'] = 4

print(mi_diccionario)
{}
{'hola': 4}

Función enumerate()

A esta función se le pasa un iterable y me devuelve 2 valores, en la primera posicion me pasa el indice y en la segunda posicion me pasa el valor que tiene en ese momento el iterador.

Sintaxis:

index, value = enumerate(iterador)
pokemons = ['pikachu', 'bolbasor', 'charizard' ]

# Forma fea y horrible
count = 0
for pokemon in pokemons:
    print(f'La posicion de {pokemon} es {count}')
    count +=1

print('===================================')

# La forma chida
for index, value in enumerate(pokemons):
    print(f'La posicion de {value} es {index}')
La posicion de pikachu es 0
La posicion de bolbasor es 1
La posicion de charizard es 2
===================================
La posicion de pikachu es 0
La posicion de bolbasor es 1
La posicion de charizard es 2

Realizado por el Instructor: Alejandro Leyva