Saludos a todos los lectores de este blog, hoy vamos a tratar un tema muy importante en cualquier lenguaje de programación como es el trabajar con colecciones de datos, y en Python tenemos 4 formas diferentes: listas, tuplas, diccionarios y conjuntos.
Empecemos
- Listas: Las listas, es lo más parecido que podemos encontrar a los arrays o vectores que trabajan otros lenguajes de programación. Las listas pueden contener todo tipo de datos (números, cadenas, listas, etc), y crear una lista e imprimir todos sus elementos es tan fácil como escribir dos lineas parecidas a estas:
lista = [1,2,'hola',False] print lista
Y los métodos que nos permitirán realizar las funciones básicas de las listas son los siguientes:
lista.append(3)
"""append agregara un elemento al final de la lista por lo que nuestra lista tendra los siguientes valores [1,2,'hola',False,3]"""
lista.insert(2,'mundo')
"""insert agregara un elemento en el indice que se le indique, en este caso el indice es dos por lo que nuestra lista tendra los siguientes valores [1,2,'mundo','hola',False,3]"""
lista.remove(1)
"""remove eliminara el primer elemento de la lista que sea igual al valor indicado, en este caso es 1 por lo que nuestra lista tendra los siguientes valores [2,'mundo',hola',False,3]"""
lista.index('hola')
"""index nos devuelve el valor del indice del elemento que se le indica como parametro, en este caso es la cadena hola y el valor que nos devolvera es 2"""
El acceso a los datos de una lista es a través de los índices que indican la posición de cada uno de los elementos de la lista. Debemos tener siempre en cuenta que el primer elemento de la lista tendrá como indice el 0, el segundo tendrá como indice el 1, el tercero el 2 y así sucesivamente.
lista[3] """nos permitira acceder al elemento que tiene por indice 3 en la lista, en el ejemplo podremos ver que es False"""Python tiene una peculiaridad al trabajar con listas que lo diferencia de otros lenguajes, y es que python hace uso de indices con valor negativo. ¿Y para qué nos servirían los índices negativos? Bueno, los índices negativos nos permiten acceder de forma más fácil a los últimos elementos de la lista siendo el valor de índice -1 con el que accederemos al último elemento de la lista, el valor de índice -2 al penúltimo, el -3 al antepenúltimo y así sucesivamente.
lista[-2] """nos permitira acceder al penultimo elemento en la lista, en el ejemplo podremos ver que es False"""Otra propiedad de las listas en python es el uso de slicing o particionado, lo que nos permite el seleccionar una fragmento de la lista indicándole el inicio y el fin, incluso podemos indicarle el inicio el fin y el salto para poder indicar cada cuantos elementos se agregará un elemento más a la nueva lista.
lista[1:3] """nos permitira tener la siguiente particion de nuestra lista ['mundo', 'hola']""" lista[1:4:2] """nos permitira tener la siguiente particion de nuestra lista ['mundo', False]"""
tupla0 = (1,False,'Hola') """Tambien podemos hacerlo sin parentesis""" tupla1 = 1,False,'Hola' """Nota: Si queremos crear una tupla con un solo elemento debemos colocar la coma al final""" tupla2= 1,
La forma de acceder a los elementos de las tuplas es la misma que en las listas, indicando el índice entre corchetes.
tupla0[0] """nos permitira acceder al primer elemento de nuestra tupla, en el ejemplo podremos ver que es 1"""
diccionario = {"clave":"valor"}
Como clave podemos usar cualquier valor inmutable cadenas, boleanos, tuplas, etc. menos listas o diccionarios dado que son mutables. La forma de acceder a los valores almacenados en los diccionarios es a través de las claves y no de los índices como en las listas o la tuplas.
diccionario = {"clave":"valor"}
diccionario["clave"]
"""Nos devolvera 'valor'"""
En los diccionarios no podemos hacer uso del particionado, debido a que no son de tipo secuencia si no de tipo mapping (asociaciones).conjunto = {1,2,'hola',False}
"""O si deseamos trabajar una cadena como un cojunto seria de la siguiente manera"""
palabra = set('palabra')
Y estos son algunos de sus usos:
print conjunto0 - conjunto1 """Elementos de conjunto0 que no estan en conjunto1 set([False, 'hola'])""" print conjunto0 | conjunto1 """Elementos en conjunto0 o en conjunto1 set([False, 1, 2, 3, 'Mundo', 'hola'])""" print conjunto0 & conjunto1 """Elementos en conjunto0 y en conjunto1 set([1, 2])""" print conjunto0 ^ conjunto1 """Elementos en conjunto0 o en conjunto1 pero no en ambos set([False, 3, 'Mundo', 'hola'])""" print 1 in conjunto1 """Devuelve si elemento 1 pertenece en conjunto1, en este caso es True"""
¡Manos a la obra!
- Abrimos nuestro o proyecto anterior o en su defecto lo descargamos de github.
- Dentro de nuestro paquete clases, creamos un nuevo archivo con el nombre clsBiblioteca.py y dentro de él, una clase nueva a la que llamaremos Biblioteca y en ella crearemos nuestra lista de libros.
- Agregaremos además dentro de nuestra clase Biblioteca los métodos básicos que nos ayudarán a trabajar con nuestra lista de libros tales como agregar, insertar, eliminar, cantidad de libros, entre otros.
- Modificamos nuestro método principal dentro de nuestro archivo main.py para agregar dentro de una lista los objetos creados.
- Ahora haremos un recorrido por los libros de nuestra lista con un bucle for y nos mostrará la información de cada libro.
- El resultado al ejecutar nuestro archivo main.py será el siguiente:
class Biblioteca(): """docstring for Biblioteca""" def __init__(self): self.nombre = "" """Creamos una lista de libros vacia""" self.libros = []
def agregarLibro(self,libro): """metodo que nos permite agregar un libro al final de nuestra lista recibiendo como parametro un objeto libro""" self.libros.append(libro) def insertaLibro(self,indice,libro): """metodo que nos permite agregar un libro en una posicion dada""" self.libros.insert(indice,libro) def cantidadLibros(): """metodo que nos devuelve la cantidad de libros en la lista""" return len(self.libros) def eliminarLibro(self,libro): """metodo que eliminara el primer elemento de la lista con el valor libro""" self.libros.remove(libro) def listaLibros(self): """metodo que nos devuelve la lista entera de libros""" return self.libros def getLibro(self,indice): """metodo que nos devuelve un libro de la lista en el indice indicado""" return self.libros[indice]
def main():
"""Instanciamos un nuevo objeto de tipo Biblioteca"""
biblioteca = clases.clsBiblioteca.Biblioteca()
"""Instanciamos un nuevo objeto de tipo libro"""
libro0 = clases.clsLibro.Libro()
"""Asignamos valores a los atributos de nuestro objeto"""
libro0.setTitulo('Python para todos')
libro0.setAutor('Raul Gonzalez Duque')
libro0.setEstado(True)
"""Agregamos el primer libro a la lista de libros"""
biblioteca.agregarLibro(libro0)
"""Hacemos el recorrido por nuestra lista y mostramos informacion general de los libros de la lista""" for libro in biblioteca.listaLibros(): libro.InfoLibro()
$ python main.py Datos del Libro Titulo: Python para todos Autor: Raul Gonzalez Duque Estado: Disponible Datos del Libro Titulo: Pro git Autor: Scott Chacon Estado: Disponible
Código Completo
main.py
import sys
sys.path.append('clases')
import clases.clsLibro
import clases.clsBiblioteca
def main():
"""Instanciamos un nuevo objeto de tipo Biblioteca"""
biblioteca = clases.clsBiblioteca.Biblioteca()
"""Instanciamos un nuevo objeto de tipo libro"""
libro0 = clases.clsLibro.Libro()
"""Asignamos valores a los atributos de nuestro objeto"""
libro0.setTitulo('Python para todos')
libro0.setAutor('Raul Gonzalez Duque')
libro0.setEstado(True)
"""Agregamos el primer libro a la lista de libros"""
biblioteca.agregarLibro(libro0)
"""Instanciamos un nuevo objeto de tipo libro"""
libro1 = clases.clsLibro.Libro()
"""Asignamos valores a los atributos de nuestro objeto"""
libro1.setTitulo('Pro git')
libro1.setAutor('Scott Chacon')
libro1.setEstado(True)
"""Agregamos el primer libro a la lista de libros"""
biblioteca.agregarLibro(libro1)
"""Hacemos el recorrido por nuestra lista y mostramos informacion general de los libros de la lista"""
for libro in biblioteca.listaLibros():
libro.InfoLibro()
if __name__=='__main__':
main()
clsLibro.py
class Libro():
"""Constructor"""
def __init__(self):
"""Inicializamos Variables"""
self.titulo = ""
self.autor = ""
self.estado = True
def setTitulo(self,titulo):
self.titulo = titulo
def getTitulo(self):
return self.titulo
def setAutor(self, autor):
self.autor = autor
def getAutor(self):
return self.autor
def setEstado(self, estado):
self.estado = estado
def getEstado(self):
return self.estado
def InfoLibro(self):
print('Datos del Libro')
print('Titulo: {}'.format(self.getTitulo()))
print('Autor: {}'.format(self.getAutor()))
if self.getEstado()==True:
print('Estado: {}'.format('Disponible'))
else:
print('Estado: {}'.format('Prestado'))
clsBiblioteca.py
class Biblioteca(): """docstring for Biblioteca""" def __init__(self): self.nombre = "" """Creamos una lista de libros vacia""" self.libros = [] def agregarLibro(self,libro): """metodo que nos permite agregar un libro al final de nuestra lista recibiendo como parametro un objeto libro""" self.libros.append(libro) def insertaLibro(self,indice,libro): """metodo que nos permite agregar un libro en una posicion dada""" self.libros.insert(indice,libro) def cantidadLibros(): """metodo que nos devuelve la cantidad de libros en la lista""" return len(self.libros) def eliminarLibro(self,libro): """metodo que eliminara el primer elemento de la lista con el valor libro""" self.libros.remove(libro) def listaLibros(self): """metodo que nos devuelve la lista entera de libros""" return self.libros def getLibro(self,indice): """metodo que nos devuelve un libro de la lista en el indice indicado""" return self.libros[indice] def setNombre(self,nombre): self.nombre = nombre def getNombre(self): return self.nombre
Descarga el código completo desde github.
Bueno lectores espero este pequeño tutorial haya sido útil y de su agrado, no olviden dejar comentarios expresando sus dudas u opiniones todo nos ayuda a mejorar para ustedes, recuerden que "La práctica hace al maestro" así que no dejen de prácticar.

No hay comentarios:
Publicar un comentario