21 de febrero de 2015

Curso de Python para biólogos - Lección 2. Nuevos tipos de datos: listas, diccionarios y matrices

Volvemos con una nueva lección...
por motivos de tiempo, esta vez voy a incluir las diapositivas en inglés, aunque traduciré las explicaciones ;)

También sería gratificante que si seguís el curso y os parece útil hiciérais algún comentario para ver si alguien lo usa o es un tutorial más de Python en internet...

En esta nueva lección introduciremos dos tipos más de datos: las listas y los diccionarios. Recordad que en la lección anterior vimos los números y las cadenas de texto, además de aprender a instalar Python en Windows y a ejecutar comandos en una consola




¿Qué es una lista?

Una lista es un listado de valores, y se introducen separados por comas y entre corchetes. Dichos valores suelen ser números o cadenas, pero también pueden ser otros tipos de datos como veremos posteriormente. En Perl las listas se llaman arrays o arreglos.
Para referirnos a un elemento de la lista, deberemos conocer su posición. Dicha posición se llama índice (index) y las posiciones de los elementos en las listas comienzan en 0 (como en las cadenas). Al igual que las cadenas, las listas pueden ser troceadas, pero además los elementos de una lista también pueden ser modificados.

¿Cómo modificar una lista?

Las listas poseen un conjunto de métodos o funciones que permiten hacer diversas cosas con ellas, por ejemplo insertar elementos, eliminarlos, extraerlos, ordenarlos, contarlos... Dichos métodos se aplican escribiendo el nombre de la lista sequido de un punto, el método y entre paréntesis sus parámetros si es que los requiere (el paréntesis es obligatorio pero puede estar vacío).
 Veamos unos ejemplos:
 Pero cuidado, a cada método hay que darle los parámetros adecuados entre paréntesis:
Veamos la diferencia entre el método 'pop' que extrae un elemento indicando su posición y lo borra de la otra forma de modificar el elemento sin borrarlo. También los métodos 'append' e 'insert':
Podemos borrar elementos de una lista con la función 'del', pero cuidado porque podemos borrar la lista completa... ('del' no es un método por ello no requiere punto ni paréntesis)

Copia por valor y por refencia

Creo que este concepto merece pararnos y explicarlo más en detalle. Normalmente estamos acostumbrados que cuando copiamos algo sea una copia por valor, es decir, que si modificamos la copia no se modifique el original. Pero éste no es el comportamiento por defecto de Python, por motivos de eficiencia Python siempre copia por referencia los datos si no se indica lo contrario. La copia por referencia es una copia de las posiciones en memoria de los datos, de forma que si modificamos posteriormente la copia también se mofica el original porque guardan los datos en el mismo lugar de la memoria.
Para hacer copia por valor de una lista deberemos utilizar el método 'copy'. Si usamos el símbolo '=' se realizará una copia por referencia.

¿Qué es un diccionario?

Un diccionario se parece a una lista, pero en vez de ordenar sus elementos o 'valores' e identificarlos por su posición o índice, un diccionario no ordena sus elementosy los identifica por la llamada 'clave'. La clave es normalmente un texto que nos ayuda a localizar su contenido asociado en el diccionario, este contenido es el valor. Los diccionarios en Perl se llaman hashes o arreglos asociativos.

Un diccionario se define entre llaves, y en su interior se incluye una lista de pares clave:valor separados por comas.
Los pares clave:valor de un diccionario NO están ordenados y  no podemos referirnos a ellos mediantes índices, la única forma de llamar a un valor del diccionario es conociendo su clave asociada. De la misma forma que con las listas, el comando 'del' permite borrar pares clave:valor del diccionario, o el diccionario completo.

¿Cómo modificar un diccionario?

Al igual que las listas, los diccionarios tienen un conjunto de métodos que nos permiten modificarlos.
Los métodos 'keys' y 'values' devuelven una lista de las claves o valores respectivamente, el método 'items' devuelve una lista de pares (clave, valor). Los métodos 'get', 'pop', 'clear' y 'copy' funcionan de forma similar a como lo hacen con las listas. Realicemos unos cuantos ejemplos:

Funciones para cadenas, listas y diccionarios

Existen un conjunto de funciones u operaciones comunes para estos tres tipos de datos, se listan a continuación:
 
Permiten conocer su longitud (o número de elementos o pares clave:valor), el tipo de datos guardado en una variable o convertir un tipo de datos en otro tipo diferente:
 

Listas anidadas o listas de listas

Una lista anidada, del inglés nested list, es una lista formada por varias listas, si éstas contienen sólo números podríamos pensar como si fuera una matriz:
Pero además de incluir en una lista otras listas, podemos incluir otros tipos de datos como un diccionario. En este caso no podremos acceder a los datos del diccionario usando índices.
  
Diccionarios anidados

Al igual que en el caso de las listas, podemos crear diccionarios de diccionarios (anidados). También podemos mezclar listas en diccionarios y otros tipos de datos.

Próxima lección

La cosa se va complicando, números, cadenas, listas, diccionarios... mix!!! y además cada tipo de datos tiene asociado unos métodos y operaciones para modificarlos. En el próximo capítulo la cosa se complica y aprenderemos a comparar los datos y poner condiciones al comportamiento de un programa.

2 comentarios:

  1. Muy buenos, es una ventana para dar un chequeo de cerca para los que estamos pensando estudiar esta ciencia. Me estoy animando :D

    ResponderEliminar
  2. Muy bueno, gracias loco

    ResponderEliminar